npm 中 dependencies 和 devDependen

作者: F_wind | 来源:发表于2019-11-07 17:20 被阅读0次
    @luca-bravo-rnBzqZ8bgAY-unsplash.jpg

    导读

    使用 npm 作为包管理工具已经很多年了,但是常用的其实就那么几个功能,一些基础的但很重要的概念和用法反而不太清楚。最近抽空整理并探索一下,重新学习 npm 。

    今天先对 package.json 配置文件中的 dependencies 和 devDependencies 做一番研究。

    dependencies

    1. 使用环境:生产环境下所依赖的 npm 包集合;
    2. 命令行安装单个包的方式:
    # 在与 package.json 同级目录下执行
    # —sava-prod 为默认安装模式
    # 安装以后会自动在 package.json 的 dependencies 下添加 <package-name>
    npm install <package-name> [—sava-prod]
    
    1. 命令行集成安装方式:
    # 在与 package.json 同级目录下执行
    # 安装 dependencies 和 devDependencies 中的所有 npm 包
    npm install
    # 仅安装 dependencies 下的所有 npm 包
    npm install —production
    
    1. 被调用:如果将当前工程作为一个单独包,提供给其他人使用,在对方使用 npm install 命令安装时,会自动下载 dependencies 下的包集合。

    devDependencies

    1. 使用环境:开发和测试环境下所依赖的 npm 包集合;
    2. 命令行安装单个包的方式:
    # 在与 package.json 同级目录下执行
    # 安装以后会自动在 package.json 的 devDependencies 下添加 <package-name>
    npm install <package-name> —sava-dev
    
    1. 命令行集成安装方式:
    # 在与 package.json 同级目录下执行
    # 安装 dependencies 和 devDependencies 中的所有 npm 包
    npm install
    
    1. 被调用:如果将当前工程作为一个单独包,提供给其他人使用,在对方使用 npm install 命令安装时,不会自动下载 devDependencies 下的包集合。

    建议

    部署

    在我以往写代码的过程中,对于需要引用包的位置,并没有做任何区分,因为在使用 npm install 时会一起安装,所以没有太在意,直到使用 nest.js 时发现,默认安装的包居然有 200M 之多。

    当我需要自动化部署它们到一台线上服务器时,会花费很多时间,但其实像 @nestjs/cli 、 @types/supertest 等开发和测试工具在线上根本是用不着的。

    于是我对于要往线上环境上传的工程使用了 npm install —production 命令,这时文件大小缩小为 11M ,然后再压缩以后,最终仅仅剩下了 5M 。

    发布

    当整个工程开发完毕,作为一个独立包待发布时,同样需要注意!如果不对 dependencies 和 devDependencies 加以区分,将开发/测试依赖写在生产依赖下,会导致调用该 npm 包的用户下载很多与其无关的包,从而造成不必要的资源浪费。

    参考来源

    Specifying dependencies and devDependencies in a package.json file | npm Documentation
    npm install 你很明白吗 - NeverYu - CSDN博客

    相关文章

      网友评论

        本文标题:npm 中 dependencies 和 devDependen

        本文链接:https://www.haomeiwen.com/subject/yjbvbctx.html