同步使用autoprefixer

时间:2016-03-11 15:08:54

标签: css node.js autoprefixer postcss

我想在我的节点应用程序中使用autoprefixer来编译css。 为了我的特殊需要,我想在不回调或承诺的情况下调用autoprefixer。

很简单:

var result = autoprefixer.process(css);

var result = myPrefixerWrap(css);

我正在与此作斗争一段时间,你能帮帮我吗。

谢谢

ps:我已经尝试过postcss-js,但它会产生一个json对象用于反应,而不是纯css。例如{borderRadius:" 5px"}

var prefixer    = postcssJs.sync([ autoprefixer ]);
var cssCompiled = postcss.parse(css);
var cssObject   = postcssJS.objectify(cssCompiled);
var autoResult  = prefixer(cssObject);

1 个答案:

答案 0 :(得分:6)

PostCSS有一个API,用于同步获取Processor#processprocess().css,别名为toString())的结果,只要所有使用的PostCSS插件都是同步的,这个结果就会起作用(像Autoprefixer)。执行此操作的代码非常简单:

var postcss = require('postcss'); // import postcss from 'posts';
var autoprefixer = require('autoprefixer'); // import autoprefixer from 'autoprefixer';
postcss([autoprefixer]).process(styleString).css;

注意:我在Webpack中使用postcss-js时遇到问题,因此对于那些看到错误的人来说是这样的:

Module parse failed: /path/to/node_modules/autoprefixer/node_modules/caniuse-db/features-json/css-regions.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.

或者:

ERROR in ./~/autoprefixer/~/browserslist/index.js
Module not found: Error: Cannot resolve module 'fs' in /path/to/node_modules/autoprefixer/node_modules/browserslist
 @ ./~/autoprefixer/~/browserslist/index.js 3:14-27

查看postcss-js GitHub自述文件的Troubleshooting section,找出需要添加到Webpack配置中的内容才能使其正常运行。