You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

npm install与npm install --save的区别及--save含义解析

npm install vs npm install --save:区别与--save的含义

嘿,这个问题绝对是前端新手入门npm时的高频疑问,我来给你讲得明明白白~

核心区别(分版本看)

其实两者的差异主要和npm的版本有关:

  • npm 5.0.0之前
    • npm install 包名:仅将包下载到项目的node_modules目录中,但不会把这个包的信息写入package.jsondependencies字段。这意味着如果别人拿到你的项目(没有node_modules),运行npm install时不会自动安装这个包,因为package.json里没记录。
    • npm install --save 包名:在下载包到node_modules的同时,会把该包的名称和版本号添加到package.jsondependencies里。这样项目的依赖就被“存档”了,其他人或部署环境能通过package.json还原所有依赖。
  • npm 5.0.0及之后
    官方直接把--save设为默认行为!也就是说现在你敲npm install 包名,效果和原来的npm install --save 包名完全一样——既下载包,又自动写入package.jsondependencies。这时候两者没有任何区别了。

--save参数的具体含义

--save的核心作用就是标记包为项目的「生产依赖」

  • 生产依赖指的是项目在上线运行阶段必须依赖的包,比如React、Vue这类框架,或者axios、lodash这类业务代码里直接用到的工具库。没有这些包,项目根本跑不起来。
  • 把依赖写入package.json后,相当于给项目做了一份“依赖清单”:
    • 团队协作时,同事拿到项目只需要执行npm install,就能一键安装所有清单里的包,不用一个个手动装;
    • 部署到服务器时,也不需要上传体积庞大的node_modules,只传package.jsonpackage-lock.json,服务器执行npm install就能快速搭建相同的依赖环境。

补充:别搞混--save和--save-dev

顺便提一句,和--save对应的还有--save-dev(简写-D),它是用来安装开发依赖的——也就是只在开发阶段用到的工具,比如webpack、eslint、babel这些,项目上线后就不需要它们了。这类依赖会被写入package.jsondevDependencies字段,和生产依赖区分开,能让依赖结构更清晰。

内容的提问来源于stack exchange,提问作者HamzaAhmed

火山引擎 最新活动