2016-12-02 62 views
1

如何使用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(與咕嘟咕嘟)?

+0

'var myvar = [myobj:{x:1,y:2}];'你的意思是你想讓它創建無效的javascript。 :) – Keith

+1

我不使用browserfy,但看着文檔 - > https://github.com/substack/browserify-handbook#transforms你可能想要創建自己的轉換,..有一個例子替換'帶有'process.cwd()'的$ CWD'看起來像你可以嘗試的東西。 – Keith

+0

不太確定你想要做什麼,並且使用Ractive已經很長時間了,但是你看過https://github.com/marcello3d/node-ractify嗎? – cartant

回答

3

Browserify允許您創建自定義轉換,有一個很好的例子來說明如何在以下鏈接創建轉換。

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

做與process.cwd()一個替代$CWD的例子,似乎是爲OP創建轉換需要一個良好的起點。

如果有潛在的未來死鏈接,下面是例子。

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(); 
    }); 
};