これは、create-react-appの開発者によって追加された特別な制限です。に実装されModuleScopePlugin、ファイルが確実にに常駐しsrc/ます。このプラグインは、アプリのソースディレクトリからの相対インポートがその外部に到達しないようにします。
この機能ejectは、create-react-appプロジェクトの操作後にのみ無効にできます。
ほとんどの機能とその更新は、create-react-appシステムの内部に隠されています。作成ejectすると、いくつかの機能とその更新がなくなります。したがって、webpackなどの設定に含まれるアプリケーションを管理および設定する準備ができていない場合は、eject操作しないでください。
既存のルールでプレイします(srcに移動)。しかし今、あなたは制限を取り除く方法を知ることができます:実行してwebpack設定ファイルからeject削除ModuleScopePluginしてください。
以来作成反応するアプリ v0.4.0NODE_PATH環境変数絶対インポートのパスを指定することを可能にします。また、v3.0.0 NODE_PATHは非推奨となっているためbaseUrl、jsconfig.jsonまたはでの設定が推奨されtsconfig.jsonます。
絶対インポートでは、ベースURLで指定された値を基準にしてimport App from 'App'代わりに使用できますimport App from './App'。
この機能は、monoreposまたはその他の構成に関する質問に特に役立ちますが、publicフォルダーから画像やその他のものをインポートする場合には役立ちません。
publicフォルダーのコンテンツはフォルダーに配置されbuild、相対URLで使用できます。また、インポートされたものはすべてwebpackによって処理され、buildフォルダーにも配置されます。
publicフォルダーから何かをインポートすると、おそらくそのものがbuildフォルダーに複製され、2つの異なるURL(または異なるロード方法)で使用できるようになるため、最終的にパッケージのダウンロードサイズが悪化します。
srcフォルダーからインポートすることをお勧めします。すべては、最適なサイズのチャンクで、最高のロード効率のために、Webpackによってバンドルにパックされます。
中間ソリューション、すなわち存在するのReWireあなたは、プログラムのWebPACKの設定を変更することを可能にするシステムが。しかし、プラグインを削除することは良い解決策ではありません。と同様に、完全に機能する追加のディレクトリを追加することをお勧めします。ModuleScopePluginsrc
現在、 create-react-appsrcルートフォルダー以外の追加のディレクトリはサポートされていません。これは、react-app-rewire-aliasを使用して実行できます。
../public/images/logo_2016.png最初にcomponentsフォルダーから、次にsrcフォルダーから、2回上がった必要があります。