2013-04-19 10 views
17

デフォルトでは、browserifyはnode_modulesからインクルードされたモジュール、つまりパスなしで変換を実行しません。browserifyを使用してnpmモジュールで変換を実行する方法

私は、hereを示す簡単なギブスレポを作った。このようなbrowserifiedルックスを取得しますindex.jsファイル:

var fs = require('fs'); 
var testmodule = require('testmodule'); 
var trg1 = document.getElementById("target1"); 
var trg2 = document.getElementById("target2"); 
trg1.innerHTML = fs.readFileSync(__dirname+"/something.txt"); 
trg2.innerHTML = testmodule(); 

testmoduleは次のようになります。brfsは、モジュール変換を用いた

var fs = require('fs'); 
exports = module.exports = function() { 
    return fs.readFileSync(__dirname+'/data.txt'); 
} 

、私はfs.readFileSyncに両方の呼び出しをインライン化することができるようにしたいが、私browserify index.js -t brfs -o bundle.jsを実行すると、メインプロジェクトの呼び出しのみがインライン展開されます。ここにbundle.jsの結果があります:

;(function(e,t,n){function r(n,i){if(!t[n]){if(!e[n]){var s=typeof require=="function"&&require;if(!i&&s)return s(n,!0);throw new Error("Cannot find module '"+n+"'")}var o=t[n]={exports:{}};e[n][0](function(t){var i=e[n][1][t];return r(i?i:t)},o,o.exports)}return t[n].exports}for(var i=0;i<n.length;i++)r(n[i]);return r})({1:[function(require,module,exports){ 
// nothing to see here... no file methods for the browser 

},{}],2:[function(require,module,exports){ 
var fs = require('fs'); 
var testmodule = require('testmodule'); 
var trg1 = document.getElementById("target1"); 
var trg2 = document.getElementById("target2"); 
trg1.innerHTML = "This is data from a file in the main project folder"; // TRANSFORMED 
trg2.innerHTML = testmodule(); 
},{"fs":1,"testmodule":3}],3:[function(require,module,exports){ 
(function(__dirname){var fs = require('fs'); 
exports = module.exports = function() { 
    return fs.readFileSync(__dirname+'/data.txt'); // NO TRANSFORM 
} 
})("/node_modules/testmodule") 
},{"fs":1}]},{},[2]) 
; 

答えて

23

これには、substack(browserifyの著者)の助けがありました。プロジェクト外のモジュールに変換が必要かどうかを指定するには、package.jsonbrowserify.transformの配列を指定する必要があります。あなたはまた、browserify -g brfsの代わりbrowserify -t brfsを使用することができます

{ 
    "name":"testmodule", 
    "version":"0.0.0", 
    "browserify": { 
     "transform": ["brfs"] 
    }, 
    "main": "index.js" 
} 
+0

これを正解としてマークしてください。 – xorinzor

+1

私はそれを書いたらすぐに行こうとしていましたが、2日後までそれをやり遂げることはできません。その時点で私は忘れていました... – AndyPerlitch

+0

あなたは私を救った!本当にありがとう! –

0

:だから私は、上記与え例えば、testmoduleディレクトリ内package.jsonファイルは、次のようになります。 gはグローバルな変換です(依存関係に適用されます)

関連する問題