当只使用某些部件时,Browserify包括整个模块(react-addons)

时间:2014-09-11 09:59:07

标签: javascript node.js npm reactjs browserify

我正在使用Browserify为客户端捆绑serverside react.js代码。

但是,我感觉很糟糕,在npm包中使用模块会导致整个包被Browserify捆绑。

问: require('react-addons').LinkedStateMixin是否会导致整个react-addons包被捆绑到我的Browserified JS中?

IE:Browserify会将require('react-addons').LinkedStateMixin视为require('react-addons')吗?

如果是这样,有什么方法吗?外部工具,Browserify选项等。

3 个答案:

答案 0 :(得分:2)

Browserify无法从模块中提取部分功能。

你可以做的是,需要react-addons内的所需模块,如下所示:

require('react-addons/lib/LinkedStateMixin')

这只会包含一个模块(及其依赖项)。但是,您现在依赖于模块的内部结构。如果重命名LinkedStateMixin,则必须更改您的require语句。

答案 1 :(得分:1)

@mantoni很有帮助,但由于这是一个react-addons具体问题,我将发布我的答案。

请勿并排使用react-addonsreact。相反,当要求React使用require('react/addons')时。这会调用/addons/处的脚本,该脚本会返回带有插件的完整React

所以我的例子:

var React = require('react/addons');
var LinkedStateMixin = React.LinkedStateMixin;

//this works as normal!
React.createClass({});

谢谢你们!

答案 2 :(得分:1)

ReactJS 0.13.3如果你想使用例如CSSTransitionGroup var React = require('react/addons'), CSSTransitionGroup = React.addons.CSSTransitionGroup; 你必须做下一个:

npm install react

所有必须安装的内容 - WHERE concat(X, Y) like '%Some Value%'