PostCSS 自定义 parser 为什么没生效?
我试着用 PostCSS 写了个自定义 parser 来处理特殊的 CSS 注释语法,但配置完之后发现根本没走我写的 parser 逻辑。是不是哪里配置错了?
我的 postcss.config.js 是这样写的:
module.exports = {
parser: './my-parser.js',
plugins: [require('autoprefixer')]
}
而 my-parser.js 里导出了一个函数,也按文档用了 postcss.parse 的结构,但完全没被调用,构建过程也没报错,就是静默忽略了……这到底咋回事?
parser配置写错了。parser选项需要的是一个模块对象,不是文件路径字符串。PostCSS 会把./my-parser.js当成内置 parser 的名字(比如 'sugarss' 这种),找不到就默认用标准 CSS parser,你的自定义逻辑自然就被忽略了。改一下配置:
或者用相对路径也行:
后面这种写法 PostCSS 会自动 resolve,帮你 require。
另外确保你的 my-parser.js 导出的是符合 PostCSS 规范的 parser,格式大概是这样:
核心就是
parser那里要require()进去,不能直接写路径字符串。