当前位置: 首页 > 后端技术 > Node.js

npminstallpackagename[--save[,--save-dev[,--global]]的区别

时间:2023-04-03 10:49:42 Node.js

首先根据npm官方文档,npm命令行的写法有很多种:npm安装(没有参数,在包目录中)npminstall[<@scope>/]npminstall[<@scope>/]@npminstall[<@scope>/]@npminstall[<@scope>/]@npminstall:/npminstallnpminstallnpminstallnpminstall别名:npmicommon选项:[-P|--save-prod|-D|--save-dev|-O|--save-optional][-E|--save-exact][-B|--save-bundle][--no-save][--dry-run]这里只说一些常用的。首先,对于标题中的命令,它们只是全称和缩写区别npminstallpackagename--save相当于npminstallpackagename-Snpminstallpackagename--save-dev相当于npminstallpackagename-Dnpminstallpackagename--global相当于npminstallpackagename-g至于这个npminstallpackagename,也是最后不加参数的写法。之前没注意,今天突然想起来了。百度后有几千篇文章同样,下面会提到具体问题。npminstallpackagename-g会把依赖包下载到全局。至于global的位置,就看你的npm安装路径了。一般全局包在npm安装路径下的node_modules文件夹下,当然你也可以自己修改npm全局包的安装位置。npminstallpackagename--save/-S会把包下载到项目根目录的node_modules中,在依赖文件package.json的dependencies属性下添加,属于Production环境依赖,即必要的依赖用于项目运营。没有它,项目无法运行,比如常用的vue-router和vuex。这些依赖会在项目最终打包时打包到项目代码中。npminstallpackagename--save-dev/-D会把包下载到项目根目录的node_modules中,并添加到依赖文件package.json中的devDependencies属性下,属于开发环境依赖,仅开发项目时需要。比如写ES6转ES5的插件,为了兼容,在开发的时候就用ES6语法写。使用npmrundev编译时,插件被编译成ES5语法。每次更改代码,都必须重新编译。当我们项目做完的时候,代码暂时不会改。执行npmrunbuild命令将ES6语法代码重新编译成ES5代码,然后放到服务器上。服务端运行的ES5语法代码与浏览器基本兼容。是的,此时ES6转ES5插件的使命已经完成,所以最终打包项目时,开发环境依赖不会被打包到项目代码中。npminstallpackagename会把包下载到项目根目录下的node_modules中,但是会添加到package.json中吗?当时我在看一个视频。视频中npminstallvuex后,将vuex添加到生产环境依赖中,我在百度上搜索了相关文章后发现基本是一样的,说的是这种写法只会把包下载到node_modules下项目,并不会修改package.json,让我陷入了沉思。在QQ群里询问后,有老大说这是因为npm版本的问题。老版本没有修改package.json,但是从npm5.0.0开始,我又找了又找,终于在npmgithub仓库找到了npm5。0.0版本的updatelog大致意思是--save已经不需要了,可以省略。此时默认为--save,添加到生产环境依赖中