我想为autoprefixer静态网站生成器实现Punch预处理器。

但是,以Punch的话来说,我不确定这是否可以作为编译器,压缩器等。我已经尝试了以上所有方法,但均无济于事。

这是我最近进行的任何尝试:
./autoprefixer.js

module.exports = {
    input_extensions: [".css"],
    force_compile: true,
    compile: function(input, filename, callback){
        return callback(null, "*{color: red;}");
    }
};
config.json
...
    "plugins": {
        "compilers": {
            ".css": "punch-sass-compiler",
            ".css": "autoprefixer"
        }
    }
...
result
/home/peter/projects/website/node_modules/punch/lib/asset_bundler.js:62
                        if (compiler && compiler.input_extensions.indexOf(template_extension) > -1)
                                                                 ^
TypeError: Cannot read property 'indexOf' of undefined
  at /home/peter/projects/website/node_modules/punch/lib/asset_bundler.js:62:45
  at /home/peter/projects/website/node_modules/punch/lib/template_handler.js:119:11
  at fs.js:334:14
  at /home/peter/projects/website/node_modules/punch/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js:42:10
  at FSReqWrap.oncomplete (fs.js:95:15)

谁能指引我正确的方向?

最佳答案

目前看来,打孔编译器只能从其他扩展名编译(例如.mycss.less)。使用它,您几乎可以到达那里:

module.exports中,必须将input_extensions:设置为所需的扩展名(而不是.css),例如[".mycss"]

"plugins": {
    "compilers": {
        ".css": "punch-sass-compiler",
        ".css": "autoprefixer"
    }
}

真的很奇怪,因为您两次定义了相同的键。删除punch-sass-compiler行。如果要调用另一个编译器,只需在编译器的代码中require它的模块,调用另一个编译器,然后根据自己的喜好修改提供的输出。

打孔器不适合您的目标,因为它们仅参与生产(使用punch g),而不参与开发。

07-26 02:35