首页 > 其他分享 >一文了解npm install -g和npm install --save-dev的关系

一文了解npm install -g和npm install --save-dev的关系

时间:2024-05-21 14:07:47浏览次数:17  
标签:npm node -- modules install 安装

本文分享自华为云社区《npm install -g 和 npm install --save-dev 的关系》,作者: SHQ5785。

一、npm install 本地安装

  1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  2. 可以通过 require() 来引入本地安装包。

二、npm install -g 全局安装

  1. 将安装包放在 /usr/local 下或者 node 的安装目录。
  2. 可以直接在命令行里使用。

三、npm install --save

  1. 会把build包安装到node_modules目录中;
  2. 会在package.json的dependencies属性下添加build;
  3. 之后运行npm install命令时,会自动安装build到node_modules目录中;
  4. 之后运行npm install --production或者注明NODE_ENV变量值为production时,会自动安装msbuild到node_modules目录中;

四、npm install --save-dev

  1. 会把msbuild包安装到node_modules目录中;
  2. 会在package.json的devDependencies属性下添加msbuild;
  3. 之后运行npm install命令时,会自动安装msbuild到node_modules目录中;
  4. 之后运行npm install --production或者注明NODE_ENV变量值为production时,不会自动安装msbuild到node_modules目录中;

五、package.json 中 dependencies 与 devDependencies 的区别

  • dependencies:

应用能够正常运行所依赖的包。这种 dependencies 是最常见的,用户在使用 npm install 安装包时会自动安装这些依赖。

  • devDependencies:

开发应用时所依赖的工具包。通常是一些开发、测试、打包工具,例如 webpack、ESLint、Mocha。应用正常运行并不依赖于这些包,用户在使用 npm install 安装包时也不会安装这些依赖。

  • peerDependencies:

应用运行依赖的宿主包。最典型的就是插件,例如各种 jQuery 插件,这些插件本身不包含 jQeury,需要外部提供。用户使用 npm 1 或 2 时会自动安装这种依赖,npm 3 不会自动安装,会提示用户安装。

  • bundledDependencies:

发布包时需要打包的依赖,似乎很少见。

  • optionalDependencies:

可选的依赖包。此种依赖不是程序运行所必须的,但是安装后可能会有新功能,例如一个图片解码库,安装了 optionalDependencies 后会支持更多的格式。

那么 package.json 文件里面的 devDependencies 和 dependencies 对象有什么区别呢?

devDependencies 里面的插件(比如各种loader,babel全家桶及各种webpack插件等)只用于开发环境,不用于生产环境,因此不需要打包;而 dependencies 是需要发布到生产环境的,是要打包的。

 

点击关注,第一时间了解华为云新鲜技术~

 

标签:npm,node,--,modules,install,安装
From: https://www.cnblogs.com/huaweiyun/p/18203883

相关文章

  • mysql中主键、外键、约束、索引
    主键用于唯一标识表中每一行数据,外键用于建立表与表之间关联关系,约束用于限制表中数据的规则,索引用于加速查询。1.主键是一种用于唯一标识表中每一行数据的标识符。在Mysql中,主键可以是一个或多个列的组合,但是必须满足以下条件:主键列的值必须唯一,不能重复。主键列的值不能为......
  • 梦断代码阅读笔记01
    梦断代码阅读笔记01项目启动在过去的项目启动阶段,我通常会直接进入编写代码或者简单构思功能实现方式,没有深度考虑项目的全局目标和详细的需求分析。此外,我在团队组建时并没有特别关注成员的技能搭配和工作风格,这常常导致后续开发过程中的沟通不畅和效率低下。这样做有很多不足......
  • 【cp】cp指令-不进行覆盖提醒
    背景把文件夹dir1下面的文件复制到dir2文件夹下cp/dir1/*dir2有时候就会提示,"是否覆盖'xxxxx.xlsx'?"如果dir1文件夹下面有100个文件,这样会来100次提示,也是非常烦人的,有什么办法让它不提示呢?使用这样:加个-f参数:cp-f/dir1/*dir2如果这样还是会提示,那就使用......
  • 关于idea报错提示Output directory is not specified
    报错提示:D:\XXX\src\main\java\com\XXX\XXX\base\BaseApiController.java:11:8java:写入com.XXX.XXX.base.BaseApiController时出错:Outputdirectoryisnotspecified解决措施:方法一:检查Maven配置确保pom.xml中的Maven配置正确设置了输出目录。你可以按照以下步骤......
  • Atcoder 题目选做(五)
    \(\text{ByDaiRuiChen007}\)1.[ARC159E]DifferenceSumQueryProblemLink给定\(n,m\),定义\(x\in[1,n]\)的深度\(f(x)\)为:初始\([l,r]=[1,n]\)。第\(i\)次操作求出\(l,r\)按\(a_{i\bmodm}:b_{i\bmodm}\)的比例的中点\(mid\)。如果\(x=mid\),那么......
  • 一键自动化博客发布工具,用过的人都说好(腾讯云篇)
    虽然头条现在非常强大,但是我还是不得不吐槽一下头条的博客发布,居然不支持markdown格式。并且在某些浏览器上还会出现编辑页面打不开的情况,让我一度怀疑是我浏览器的问题。不过,这都不重要,重要的是blog-auto-publishing-tools这个工具可以实现头条的自动化。前提条件前提条件当......
  • YiShaAdmin:一款基于.NET Core Web + Bootstrap的企业级快速开发框架
    前言今天大姚给大家分享一款基于.NETCoreWeb+Bootstrap的企业级快速后台开发框架、权限管理系统,代码简单易懂、界面简洁美观(基于MITLicense开源,免费可商用):YiShaAdmin。项目官方介绍YiShaAdmin基于.NETCoreWeb开发,借鉴了很多开源项目的优点,让你开发Web管理系统和移动端A......
  • Atcoder 题目选做(六)
    \(\text{ByDaiRuiChen007}\)1.[ARC162E]StrangeConstraintsProblemLink给定\(a_1\sima_n\),求有多少\(b_1\simb_n\)满足:\(b_i\in[1,n]\),且\(i\)和\(b_i\)的出现次数均不超过\(a_i\)。数据范围:\(n\le500\)。设\(\gek\)的\(a_i\)有\(c_k......
  • RPC学习记录
    RPC是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地方法一样的体验。RPC是一个远程调用,需要通过网络来传输数据,并且RPC常用于业务系统之间的数据交互,需要保证其可靠性,所以一般默认采用TCP来传输。 网络传输数据必须是二进制的,但是调用方请求的出入参数都是对象,对象没......
  • QShop商城--项目介绍
    QShop商城-项目介绍QShop商城,是全新推出的一款轻量级、高性能、前后端分离的电商系统,支持微信小程序,前后端源码100%开源,完美支持二次开发,让您快速搭建个性化独立商城。技术架构:.Net6、WebAPI、Swagger、NUnit、VUE、Element-UI、AntDesignVue,专注轻量可持续稳定的高可用系......