如何在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)完成之前将结果返回给文件服务器处理。