2015-06-21 60 views
2

我有應用程序寫在node.js需要一些npm模塊(反應,反應路由器和其他)。當我運行browserify時,所有npm模塊都被「注入」到bundle.js文件中。我想要的是爲bower提供分發,它不會在bundle.js文件中包含反應和反應路由器依賴項,因爲它們可以在bower.json中作爲依賴項引用。如何使用browserify「刪除」/「更改」某些需要(...)調用?

app.js:

在bundle.js反應過來被注入它連同app.js

我需要將不包含bundle.js反應,會認爲它是可用在全球(窗口)範圍內。

bundle.js:

React.render(...) 

或者是這樣的:

var require = function(name){ return window[name] } 
var React = require('react') 
React.render(...) 

所以基本上我想告訴browserify,某些模塊可在window範圍中找到並沒有被注入bundle.js ...

+2

不知道是否有一種方法可以做到這一點與Browserify直接CONFIGS,但包[browserify-墊片(https://www.npmjs.com/package/browserify-shim)似乎處理您的用例。 – Mathletics

+0

嘿我無法設法使它與browserify-shim一起工作,但是我發現這個模塊只是替換指定模塊的browserify-global-shim需要('require('XXX')'=>'window.XXX') – user606521

+0

@ user606521感謝你,我的問題在這裏解決了哥們!謝謝! http://stackoverflow.com/questions/34681058/how-to-browserify-a-file-that-includes-a-node-module-with-an-equivalent-client-v – user2290820

回答

1

使用-x [Module Name]可以從該包中排除節點模塊。

browserify -d -x react -x react-router app.js > bundle.js 
+0

你知道我可以如何使用代碼中的-x選項(不是cli)?我無法在文檔中找到相應的browserify選項... – user606521

+0

Sry,我不知道如何從代碼中使用它。但爲什麼你需要將這些模塊設置爲全局?你可以將它們捆綁到一個單獨的文件中。 – marcel

+0

您可以檢查模塊是否存在。 'var React = require('react');'。如果找不到模塊,則「React」將不確定。 – marcel