package.json中的devdependencies和dependencies的区别

网上有很多关于devdependencies 和 dependencies区别的文章,看了下,都没有说到重点。

其实官网已经说得非常清楚了

https://docs.npmjs.com/cli/v6/configuring-npm/package-json#devdependencies

如果还是不理解,下面这个文章很好

https://www.yuque.com/docs/share/963e29e1-3314-453f-b417-d8ce543b78cc

我的理解是,如果不是发布npm包例如我们常用的就是clone源码,然后npm install,这样的话,这两个地方包含的依赖都会被正确下载到 node_modules 里。——意思就是,没区别

但是,如果你要发布npm包,那就要注意了,这种情况如果有人想使用你的npm模块,npm install只会下载在dependencies的依赖。举个例子,你做了个日历插件,用到了element.js,没有把它放在dependencies,而是放在了devdependencies,那别人使用你的日历插件的时候就会报错,因为在dependencies找不到element.js。

另一种,假如你把“无用”的依赖放在了dependencies,那会导致使用的时候下载多余的文件。还是这个例子,你做了个日历插件,为了方便使用了webpack来打包,那这个webpack就应该放在devdependencies,放在dependencies虽然不会导致错误,但是别人使用的时候明明不需要却下载了webpack。所以,这里的“无用”是指开发时需要,但是上线以后就不用了。

总结一下,如果不是发布npm包,devdependencies和dependencies没有区别,你的依赖放其中哪个都行。当然,为了规范,还是不要乱写。所以不管是不是要发布npm包,都要做好规范。那么如何判断一个依赖放哪里呢?element.js是一个组件库,项目一直需要它,放dependencies;而webpack是为了方便打包上线,打包上线后就用不到了,放devdependencies。

常见的几种情况:

devdependencies:babel-corebabel-eslint、等babel系列,autoprefixerwebpackwebpack-dev-server*-loader loader系列等等

dependencies:reactvuereact-reduxreact-router-dom

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Node.jspackage.json文件通常用于描述一个模块或应用程序的元数据信息,例如名称、版本、作者、许可证等。除此之外,package.json文件还包含了两个重要的属性:dependenciesdevDependencies。 1. dependencies dependencies属性是一个对象,用于指定当前模块或应用程序所依赖的其他模块。这些模块通常被称为生产环境依赖项,因为它们是在生产环境运行时必需的。 例如,如果你的应用程序依赖于Express框架,则可以在dependencies属性添加如下条目: ``` "dependencies": { "express": "^4.17.1" } ``` 这里的"^4.17.1"表示使用的是Express的4.x.x版本,其的^符号表示可以接受4.x.x版本的任何更新版本。 当你使用npm install命令安装依赖项时,npm会自动下载并安装dependencies属性指定的所有模块。 2. devDependencies devDependencies属性也是一个对象,用于指定当前模块或应用程序开发过程所需要的其他模块。这些模块通常被称为开发环境依赖项,因为它们只在开发过程使用,不会在生产环境运行。 例如,如果你的应用程序使用了Jest测试框架,则可以在devDependencies属性添加如下条目: ``` "devDependencies": { "jest": "^26.6.3" } ``` 与dependencies属性类似,当你使用npm install命令安装依赖项时,npm会自动下载并安装devDependencies属性指定的所有模块。但是,如果你使用npm install --production命令来安装依赖项,则不会安装devDependencies属性指定的模块。 总结 在package.json文件dependencies属性用于指定生产环境依赖项,而devDependencies属性用于指定开发环境依赖项。这两个属性都是必需的,因为它们能够确保你的应用程序在不同环境都能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值