组织一个React JS项目 - 构建单个JS文件

nog*_*bag 11 browserify reactjs

我刚开始使用React.我没有任何问题地浏览了CommentBox教程.但是框架没有为组织JS文件或为SPA编译单个缩小的JS文件提供太多/任何指导.我已经知道框架是灵活的,并没有强制执行标准,我确信这些问题可能对于在Javascript生态系统中开发的人来说显而易见.

我认为共识是使用Browserify,在文档中有一个指向git starter项目的链接:

https://github.com/petehunt/react-browserify-template

这是一个好的开始,但它仍然只编译一个JS文件"index.js".我阅读了一些browserify手册,我认为我只需要"需要"我的其他文件(这些文件需要自己导出).

所以我修改了index.js看起来像这样:

/** @jsx React.DOM */
var React = require('react');
var pkg = require('./package.json');

var commentBox = require('./comment-box.js');
Run Code Online (Sandbox Code Playgroud)

comment-box.js基本上是一个hello world test:

/** @jsx React.DOM */
var React = require('react');
var CommentBox = React.createClass({
    render: function() {
        return (
            <div className="commentBox">
            Hello, world! I am a CommentBox.
            </div>
            );
    }
});

React.renderComponent(
    <CommentBox />,
    document.getElementById('content')
);

module.exports = CommentBox;
Run Code Online (Sandbox Code Playgroud)

如果我运行react-browserify-template的启动目标,它似乎生成了browser-bundle.js:

npm start
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试构建目标

npm build
Run Code Online (Sandbox Code Playgroud)

...什么都没发生.我将npm的输出更改为详细,我得到以下内容:

npm info it worked if it ends with ok
npm verb cli [ 'node', '/usr/local/bin/npm', 'build' ]
npm info using npm@1.4.21
npm info using node@v0.10.24
npm verb exit [ 0, true ]
npm info ok
Run Code Online (Sandbox Code Playgroud)

根据package.json,它应该生成一个文件"browser-bundle.min.js",但我得不到输出.我希望有人可以解决这个问题.

nog*_*bag 4

我明白问题出在哪里了。正如我最初所说,对于在 JS 生态系统中进行开发的人来说,这可能是显而易见的:)

React-browserify-template中的 package.json在“scripts”部分包含三个脚本,键为“start”、“build”和“test”。

正如我之前所说,通过运行开始工作正常:

npm start
Run Code Online (Sandbox Code Playgroud)

我错误地认为我可以类似地运行构建脚本:

npm build (this will never work and there will be no errors/output)
Run Code Online (Sandbox Code Playgroud)

事实证明我需要使用以下命令运行构建脚本:

npm run-script build
Run Code Online (Sandbox Code Playgroud)

文档中的一行额外内容可能会帮我节省几个小时的麻烦:D 我现在正在使用这种方法,因为它看起来更简单。此外,它将 NODE_ENV 设置为生产并使用 envify,这显然很重要: https: //github.com/facebook/react/issues/1772

另一件事是,一些官方示例(例如todomvc-flux)在 require 函数中使用小写的“react”:

var React = require('react');
Run Code Online (Sandbox Code Playgroud)

所以我想这是推荐的语法(?)