如何在Node.js中使用Autoprefixer
根据官方文件,这很简单:
用法:
var autoprefixer = require('autoprefixer-core'); var postcss = require('postcss'); postcss([ autoprefixer ]).process(css).then(function (result) { result.warnings().forEach(function (warn) { console.warn(warn.toString()); }); console.log(result.css); });
然而,我很困惑我到底做了什么来build立与process()
一起使用的对象css
。 我尝试使用fs.readfile()
的结果,但似乎并没有工作。 我的服务器模块相当大,在这里省略代码可能会更好。 我真的只是简单地需要知道如何创build过程函数的css
。
我想我已经解决了你的问题。
你想把一个文件读入一个名为css
的variables,并将css
传递给process()
。 问题在于你使用哪种方法来读取文件的内容。
目前,您使用的是asynchronous的fs.readFile
。 你正在使用它,就好像它是同步的。 所以你有两个select:
使用fs.readFile
的方式来使用,又名:asynchronous:
var autoprefixer = require('autoprefixer-core'); var postcss = require('postcss'); function processCSS(file, cb){ fs.readFile(file, {encoding: String}, function (err, css) { if (err) throw err; postcss([ autoprefixer ]).process(css).then(function (result) { result.warnings().forEach(function (warn) { console.warn(warn.toString()); }); console.log(result.css); cb( result.css ); }); }); }
如果你决定使用这个,那么了解承诺可能是个好主意,它可以清理asynchronous代码。
或者,而不是fs.readFile
,您可以使用fs.readFileSync
同步读取文件。 根据你的文件的大小,这不是最好的主意。
var autoprefixer = require('autoprefixer-core'); var postcss = require('postcss'); function processCSS(file, cb){ var css = fs.readFileSync(file, {encoding: String}); postcss([ autoprefixer ]).process(css).then(function (result) { result.warnings().forEach(function (warn) { console.warn(warn.toString()); }); console.log(result.css); cb( result.css ); }); }
希望这可以帮助!
答案是:css 是 fs.readFile()
的结果。
愚蠢的错误在我的一部分。 我尝试使用它们在文档中显示的函数,并在postcss()
函数(async)完成之前将结果返回给文件服务器处理。