如何将 Autoprefixer 与 Node.js 一起使用
How do I use Autoprefixer with Node.js
根据官方文档,这很简单:
用法:
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);
});
但是,我对我究竟做了什么来建立对象 css
以与 process()
一起使用感到困惑。我尝试使用 fs.readfile()
的结果,但它似乎不起作用。我的服务器模块相当大,最好省略此处的代码。我真的只需要知道如何为流程功能创建 css
。
答案是:css 是fs.readFile()
的结果。
我犯了一个愚蠢的错误。我尝试使用他们在文档中显示的函数,并在 postcss()
函数(异步)完成之前将其结果返回给文件服务器处理。
我想我已经解决了你的问题。
您想将文件读入名为 css
的变量中,并将 css
传递给 process()
。问题在于您使用哪种方法读取文件的内容。
目前,您使用异步的 fs.readFile
。您正在使用它,就好像它是同步的。因此,您有两个选择:
按照预期的方式使用 fs.readFile
,又名:异步:
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 );
});
});
}
如果您决定使用它,了解 promises 可能是个好主意,它可以清理异步代码。
或者您可以使用 fs.readFileSync
而不是 fs.readFile
,它将同步读取文件。根据文件的大小,这不是最好的主意。
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 );
});
}
希望对您有所帮助!
根据官方文档,这很简单:
用法:
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);
});
但是,我对我究竟做了什么来建立对象 css
以与 process()
一起使用感到困惑。我尝试使用 fs.readfile()
的结果,但它似乎不起作用。我的服务器模块相当大,最好省略此处的代码。我真的只需要知道如何为流程功能创建 css
。
答案是:css 是fs.readFile()
的结果。
我犯了一个愚蠢的错误。我尝试使用他们在文档中显示的函数,并在 postcss()
函数(异步)完成之前将其结果返回给文件服务器处理。
我想我已经解决了你的问题。
您想将文件读入名为 css
的变量中,并将 css
传递给 process()
。问题在于您使用哪种方法读取文件的内容。
目前,您使用异步的 fs.readFile
。您正在使用它,就好像它是同步的。因此,您有两个选择:
按照预期的方式使用 fs.readFile
,又名:异步:
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 );
});
});
}
如果您决定使用它,了解 promises 可能是个好主意,它可以清理异步代码。
或者您可以使用 fs.readFileSync
而不是 fs.readFile
,它将同步读取文件。根据文件的大小,这不是最好的主意。
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 );
});
}
希望对您有所帮助!