[聚合文章] dependencies和devDependencies的正确使用姿势-这一次彻底弄懂吧

程序员 2017-12-29 19 阅读

刀耕火种的时代已经过去,前端开发急需自动化,工程化。

有一天,你找到公司新人程序员小T和小F,给他们每个人分配了一个任务。小T和小F微笑的答应了,确定了项目的选型和结构,小T和小F准备安装依赖的模块。但是他们开始对于dependencies和devDependencies并没有那么在意:

程序员小T把所有的依赖模块都使用 npm install --save ,将依赖安装在项目中,并写入了package.json的 dependencies (生产环境),最终导致项目臃肿不堪,前端是对性能的狂热追求者,最终小T的项目没有通过测试。

程序员小F把所有的依赖模块使用 npm install --save-dev ,将依赖安装在项目中,并写入了package.json中的 devDependencies (本地开发环境),最终导致正常运行该项目使用了哪些依赖模块无从得知,预想后期会带来很多麻烦,导致小F的项目也没有通过测试

安装依赖的三种方式

小T和小F有些疑惑,项目本地明明正常,为什么都没有通过测试呢?他们决定弄个明白..

于是小T问,小F “你是怎么安装依赖的呀?” 小F:“我是使用 npm install --save-dev 安装依赖模块”,“哦,是这样呀,我是用过npm install –save安装的模块”,小T答到。

  • npm install
  • npm install –save
  • npm install –save-dev

使用 npm install 将依赖模块安装到项目,但不写package.json(不推荐,这样最终需要手动添加);使用 npm install --save 将模块安装到项目,写入的package.json的 dependencies 中;使用 npm install --save-dev 将模块安装到本地,写入package.json的 devDependencies 中。

小T恍然大悟,原来是这样呀。那么前端工程化中的 开发环境生产环境 到底有怎么样的区别呢?

dependencies和devDependencies的区别

原来devDependencies里面的模块只用于开发环境,不用于生产环境,而 dependencies 是需要发布到生产环境的。那究竟有什么区别呢?工程化为什么需要这两个环境?

开发环境

devDependencies中dev是develop的缩写,表示开发环境,即指开发阶段,对于一些仅在开发阶段需要的模块,项目正式投入后便不再需要的模块,我们选择把它们安装在 devDependencies .

前端开发越来越体现工程化改革的姿态,无论是使用工具的进化,还是框架的更新迭代,前端对性能狂热追求伴随着工程化的进步也在不断提高,必然导致开发环境的多种多样,不可避免的导致开发环境的臃肿

生产环境

生产环境也就是真是真实环境,是线上用户接触的产生环境,因为开发环境的臃肿,不能直接用于生产环境,我们需要对环境可以优化的部分进行优化。

判断是开发环境还是生产环境

  • 使用req.app.get(‘env’)

举个栗子:

app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。