React JSプロジェクトの整理 - シングルJSファイルの構築
-
21-12-2019 - |
質問
Reactを使い始めました。問題なくコメントボックスのチュートリアルを経験しました。しかし、フレームワークはあなたのJSファイルを整理するか、SPAのための単一のMinified JSファイルをコンパイルするためのガイダンスを大いに与えません。私はすでにフレームワークが柔軟であり、標準を強制していないことを知っています。
コンセンサスが閲覧することとドキュメントでGit Starterプロジェクトへのリンクがあると想像してみてください:
https://github.com/petehunt/React-Browserify-template < / P>
これは良いスタートですが、それでもそれは単一のJSファイル "index.js"をコンパイルします。私は閲覧ハンドブックのいくつかを読み、私の他のファイルを「要求」する必要があると思った(そしてそれらのファイルはそれら自体をエクスポートする必要がある)。
だから私はindex.jsを変更するように変更しました:
/** @jsx React.DOM */
var React = require('react');
var pkg = require('./package.json');
var commentBox = require('./comment-box.js');
.
コメントBox.jsは基本的にこんにちは世界テストです:
/** @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;
.
React-Browserify-Templateの開始対象を実行すると、ブラウザ-bundle.js fine:
npm start
.
しかし、ビルドターゲットを試してみる場合
npm build
.
...何も起こらない。 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
.
package.jsonによると、ファイル "browser-bundle.min.js"を生成することになっていましたが、代わりに出力はありません。誰かがこれをクリアできることを願っています。
解決
私は問題が何であるかを考え出した。もともと述べたように、JSエコシステムで開発されている人にとってはおそらく明らかです。)
React-Browserify - テンプレート< / a>「スクリプト」セクションには、キー "start"、 "build"、 "test"という3つのスクリプトがあります。
npm start
.
私は同じようにビルドスクリプトを実行できることを誤って勧告しました:
npm build (this will never work and there will be no errors/output)
.
を使ってビルドスクリプトを実行する必要がありました
npm run-script build
.
ドキュメンテーションの1つの余分な行は私を悩ませてきた時間を節約したかもしれません。また、NODE_ENVを製造に設定し、これは明らかに重要なものです。 https://github.com/ Facebook / React / Nessword / 1772
他のもう1つのもの、
他のヒント
Felixのgistを用いた作業解。注:これは、envifyと実稼働フラグを使用して、envifyと実動フラグを使用して生産フラグを使用しています。/fb.me/React-devTools "rel=" nofollow "> http://fb.me/React-Devtools "これは起動時のコンソールに印刷されます。
おそらくMODは解決策のためにFelixクレジットを与えることができますか?
app.js
/**
* @jsx React.DOM
*/
"use strict";
var React = require('React');
var CommentBox = require('./components/CommentBox.js');
React.renderComponent(
<CommentBox />,
document.getElementById('content')
);
.
コンポーネント/ commentbox.js
/** @jsx React.DOM */
var React = require('React');
var CommentList = require('./CommentList.js');
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
<h1>Comments</h1>
<CommentList />
</div>
);
}
});
module.exports = CommentBox;
.
コンポーネント/ commentList.js
/** @jsx React.DOM */
var React = require('React');
var CommentList = React.createClass({
render: function() {
return (
<div className="commentList">
Hello, world! I am a CommentList.
</div>
);
}
});
module.exports = CommentList;
.