用 browserify 预处理?

Preprocessing with browserify?

如何使用 browserify 预处理函数调用?

在一个大的 js 文件中,有一次我需要将一个 JSON 对象传递给一个变量,但是这个 JSON 对象只能通过函数调用创建:

var myvar = Ractive.parse('mytemplate.html');

如果我这样写这个函数调用,这行代码会原样出现在bundle.js文件中。我只是想要这样的东西:

var myvar = THIS_WILL_RUN_WHILE_BROWSERIFYING(Ractive.parse('mytemplate.html'));

所以在 bundle.js 中,我希望看到类似的内容:

var myvar = [{myobj:4},{x:1,y:2}];

如何使用 browserify(使用 Gulp)实现这一点?

Browserify 允许您创建自定义转换,下面的 link.

中有一个关于如何创建转换的很好示例

https://github.com/substack/browserify-handbook#transforms

$CWD 替换为 process.cwd() 的示例似乎是 OP 创建所需转换的良好起点。

万一将来可能有 link 人死亡,这里是示例。

var through = require('through2');

module.exports = function (file) {
    return through(function (buf, enc, next) {
        this.push(buf.toString('utf8').replace(/$CWD/g, process.cwd()));
        next();
    });
};