5

我想为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)

谁能引导我朝着正确的方向前进?

4

1 回答 1

1

目前看来,punch 编译器只能从不同的扩展名(比如.mycssor .less)编译。使用它,你几乎就在那里:

module.exports, 中input_extensions:必须设置为您想要的扩展名(不是.css),例如[".mycss"].

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

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

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

于 2015-12-10T00:42:28.937 回答