web-dev-qa-db-ja.com

依存関係セクションのcreate-react-appインストール依存関係

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がそれらをここに配置したのですか?

18
dagda1

これは、最新バージョンの1つでの意図的な変更です。

静的バンドルを生成するフロントエンドアプリの場合、この区別はかなり恣意的です。技術的には、サーバーへのこれらの依存関係のanyは必要ありません。実行時の依存関係も必要ありません。したがって、そのロジックでは、reactでさえ開発の依存関係と見なされる可能性があります。

以前はそれらを分離しようとしていましたが、上で説明したように、そもそも一貫性がありません。この区別がNodeランタイムがないアプリに役立つという技術的な理由はありません。さらに、開発の依存関係をインストールしなかった(したがって、インストールされなかった)一部のHerokuデプロイメントで問題が発生していました。サーバー上でプロジェクトをビルドしたり、デプロイの直前にテストしたりすることはできません)。

結局、私たちはすべてを依存関係に置くだけで行きました。同意できない場合は、合理的と思われる場合はいつでもpackage.jsonを再配置できます。

28
Dan Abramov

構築しているアプリがライブラリであり、他のアプリを公開して使用する場合、これらはすべて開発者の依存関係です。

基本的に私の理解は、2つの方法で使用できるモジュールがある場合、これです。

  • npm i経由で消費
  • プロジェクトのクローンを作成して開発

そのシナリオでは、それらを開発者の依存関係に置くことは理にかなっています。

あなたの場合、人々はあなたのプロジェクトを複製して開発しようとしています。そして、ホストされているものを介してそれを消費します。

お役に立てれば。!

1
Aftab Khan