create-react-app
で新しいプロジェクトを作成し、yarn eject
を実行した後。
Package.jsonの依存関係セクションは次のようになります。
"dependencies": {
"autoprefixer": "7.1.1",
"babel-core": "6.25.0",
"babel-eslint": "7.2.3",
"babel-jest": "20.0.3",
"babel-loader": "7.0.0",
"babel-preset-react-app": "^3.0.1",
"babel-runtime": "6.23.0",
etc.
これらはすべてdevDependencies
であると思いますが、なぜcreate-react-appがそれらをここに配置したのですか?
これは、最新バージョンの1つでの意図的な変更です。
静的バンドルを生成するフロントエンドアプリの場合、この区別はかなり恣意的です。技術的には、サーバーへのこれらの依存関係のanyは必要ありません。実行時の依存関係も必要ありません。したがって、そのロジックでは、react
でさえ開発の依存関係と見なされる可能性があります。
以前はそれらを分離しようとしていましたが、上で説明したように、そもそも一貫性がありません。この区別がNodeランタイムがないアプリに役立つという技術的な理由はありません。さらに、開発の依存関係をインストールしなかった(したがって、インストールされなかった)一部のHerokuデプロイメントで問題が発生していました。サーバー上でプロジェクトをビルドしたり、デプロイの直前にテストしたりすることはできません)。
結局、私たちはすべてを依存関係に置くだけで行きました。同意できない場合は、合理的と思われる場合はいつでもpackage.json
を再配置できます。
構築しているアプリがライブラリであり、他のアプリを公開して使用する場合、これらはすべて開発者の依存関係です。
基本的に私の理解は、2つの方法で使用できるモジュールがある場合、これです。
npm i
経由で消費そのシナリオでは、それらを開発者の依存関係に置くことは理にかなっています。
あなたの場合、人々はあなたのプロジェクトを複製して開発しようとしています。そして、ホストされているものを介してそれを消費します。
お役に立てれば。!