问题
项目中使用yarn install
,只安装了在dependency中的依赖
知识
devDependencies 和 dependencies区别
-
devDependencies:
指的是项目开发过程中所需要的模块
-
安装时机:
只有当前的环境变量值是 `develpoment`: 才会安装devDependencies中的依赖
- 没有设置环境变量的时候: 环境变量是
develpoment
- 没有设置环境变量的时候: 环境变量是
-
-
dependencies
指的是项目运行所依赖的模块
-
安装时机:
不论当前环境变量是什么,dependencies中的依赖都会被安装
-
-
Note:项目中必须严格区分不同dependency的安装方式
dependency安装方式混乱对项目影响
-
导致不同环境安装的包不全
举个例子:
- 部署项目到production,设置此时的环境变量
NODE_ENV:production
- 此时进行
yarn install
会安装package.json:dependencies
中的依赖 - 但是项目的某个文件中
import {dev-tool} from 'devDependency'
import了一个安装在devDependencies
中的依赖 - 此时打包,webpack会将import的所有3rd party都打包到一个chunk中,但是直接报错,因为当前只安装了dependencies中的依赖,找不到此时import的devTool了
- 部署项目到production,设置此时的环境变量
使用包管理器根据不同的环境变量安装不同依赖的方式
-
yarn
使用yarn install可以安装项目中的依赖
- 没有设置环境变量,或者
export NODE_ENV=(除了production以外的任何环境变量值)
- 安装devDependency和dependency - 设置
export NODE_ENV=production
或者执行yarn install --production/yarn install --prod/yarn install --production=true
- 安装dependency
- 没有设置环境变量,或者
-
假设当前的
NODE_ENV=prodcution
如何才能既安装devDependency
也安装dependency
?
- 执行yarn install --production=false
网友评论