問題
項(xiàng)目中使用yarn install,只安裝了在dependency中的依賴
知識
devDependencies 和 dependencies區(qū)別
-
devDependencies:
指的是項(xiàng)目開發(fā)過程中所需要的模塊
-
安裝時機(jī):
只有當(dāng)前的環(huán)境變量值是 `develpoment`: 才會安裝devDependencies中的依賴- 沒有設(shè)置環(huán)境變量的時候: 環(huán)境變量是
develpoment
- 沒有設(shè)置環(huán)境變量的時候: 環(huán)境變量是
-
-
dependencies
指的是項(xiàng)目運(yùn)行所依賴的模塊
-
安裝時機(jī):
不論當(dāng)前環(huán)境變量是什么,dependencies中的依賴都會被安裝
-
Note:項(xiàng)目中必須嚴(yán)格區(qū)分不同dependency的安裝方式
dependency安裝方式混亂對項(xiàng)目影響
-
導(dǎo)致不同環(huán)境安裝的包不全
舉個例子:
- 部署項(xiàng)目到production,設(shè)置此時的環(huán)境變量
NODE_ENV:production - 此時進(jìn)行
yarn install會安裝package.json:dependencies中的依賴 - 但是項(xiàng)目的某個文件中
import {dev-tool} from 'devDependency'import了一個安裝在devDependencies中的依賴 - 此時打包,webpack會將import的所有3rd party都打包到一個chunk中,但是直接報錯,因?yàn)楫?dāng)前只安裝了dependencies中的依賴,找不到此時import的devTool了
- 部署項(xiàng)目到production,設(shè)置此時的環(huán)境變量
使用包管理器根據(jù)不同的環(huán)境變量安裝不同依賴的方式
-
yarn
使用yarn install可以安裝項(xiàng)目中的依賴
- 沒有設(shè)置環(huán)境變量,或者
export NODE_ENV=(除了production以外的任何環(huán)境變量值)
- 安裝devDependency和dependency - 設(shè)置
export NODE_ENV=production或者執(zhí)行yarn install --production/yarn install --prod/yarn install --production=true- 安裝dependency
- 沒有設(shè)置環(huán)境變量,或者
假設(shè)當(dāng)前的
NODE_ENV=prodcution如何才能既安裝devDependency也安裝dependency?
- 執(zhí)行yarn install --production=false