devDependencies dependencies env

问题

项目中使用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了

使用包管理器根据不同的环境变量安装不同依赖的方式

  • 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

你可能感兴趣的:(devDependencies dependencies env)