npm命令与package.json包管理

一、package.json中^和~的区别

(1)

npm i 的时候

~  前面两位固定 后面一位是最大数字 最新版

^  前面一位固定 后面两位是最大数字 最新版

(2)

"dependencies": {
	"css-loader": "~2.1.0",
    "es6-promise": "^2.0.0",
}

~符号
若css-loader有新的版本2.2.0及以上,你咋执行npm install时,只会匹配到2.1.x的最新版本,不会匹配到2.2.0及以上

^符号
若es6-promise有新的版本3.0.0及以上,你咋执行npm install时,只会匹配到2.x.x的最新版本,不会匹配到3.0.0及以上

(3)

webpack 项目的package.json 文件列出了项目所依赖的插件和库,同时也给出了对应的版本说明,但是在版本说明前面还有个符号:'^'(插入符号)和'~'(波浪符号),总结了下他们之间的区别:

例如:

  • '~'(波浪符号):他会更新到当前minor version(也就是中间的那位数字)中最新的版本。放到我们的例子中就是:"exif-js": "~2.3.0",这个库会去匹配更新到2.3.x的最新版本,如果出了一个新的版本为2.4.0,则不会自动升级。波浪符号是曾经npm安装时候的默认符号,现在已经变为了插入符号。
  • '^'(插入符号): 这个符号就显得非常的灵活了,他将会把当前库的版本更新到当前major version(也就是第一位数字)中最新的版本。放到我们的例子中就是:"vue": "^2.2.2", 这个库会去匹配2.x.x中最新的版本,但是他不会自动更新到3.0.0。

二、npm install全局安装和本地安装的区别 -g和不-g的区别

一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下(npm的时候不使用-g命令)。
在全局模式下,Node包会被安装到Node的安装目录下的node_modules下(npm的时候使用-g命令)。

1、全局安装命令为$npm install -g moduleName。
获知使用$npm set global=true来设定安装模式,$npm get global可以查看当前使用的安装模式。

2、npm root:查看当前包的安装路径
npm root -g:查看全局的包的安装路径

但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

三、npm install -D 和-S

-S 写入package.json的dependencies

-D 写入pakage.json的DevDependencies,生产环境需要。

npm install 安装依赖的时候,可以通过如下方式,把依赖写入package.json

npm install --save     或者  npm install -S
npm install --save-dev 或者  npm install -D

dependencies与devDependencies的区别:

devDependencies下列出的模块,是我们开发时用的依赖项,像一些进行单元测试之类的包,比如jest,我们用写单元测试,它们不会被部署到生产环境。dependencies下的模块,则是我们生产环境中需要的依赖,即正常运行该包时所需要的依赖项。

记着这句: "正常运行该包时所需要的依赖项"
后面的package-lock.json 中的 dependencies 对应的就是package.json中的 dependencies

四、npm命令

1、npm view moduleName repository.url:查看包的源文件地址  可以看到这个包的git地址

2、npm outdated:检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

3、npm init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

4、npm -v:查看npm安装的版本

5、npm search packageName:发布一个npm包的时候,需要检验某个包名是否已存在 

6、npm install moduleNames:安装Node模块

示例:
npm install express 
默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6

npm install <name> -g 
将包安装到全局环境中

但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

npm install <name> --save 
安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。

7、npm view moduleNames:查看node模块的package.json文件夹
注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用$npm view moduleName labelName

3、npm list:查看当前目录下已安装的node包
注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当前安装的所有node包

4、npm help:查看帮助命令

5、npm view moudleName dependencies:查看包的依赖关系

6、npm view moduleName repository.url:查看包的源文件地址

7、npm view moduleName engines:查看包所依赖的Node的版本

8、npm help folders:查看npm使用的所有文件夹

9、npm rebuild moduleName:用于更改包内容后进行重建

10、npm outdated:检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

11、npm update moduleName:更新node模块

12、npm uninstall moudleName:卸载node模块

13、一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访问npm的json文件夹的方法如下:
$ npm help json 
此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打开。

14、发布一个npm包的时候,需要检验某个包名是否已存在
$ npm search packageName

15、npm init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

16、npm root:查看当前包的安装路径
npm root -g:查看全局的包的安装路径

17、npm -v:查看npm安装的版本

三、--save-dev(-D) 与 --save(-S)区别

(1)

--save 是你发布(生产)之后还依赖的东西,写入了package.json的dependencies

--save-dev 是你开发时候依赖的东西,写入了package.json的devDependencies 

比如,你写 ES6 代码,如果你想编译成 ES5 发布那么 babel 就是devDependencies
如果你用了 jQuery,由于发布之后还是依赖jQuery,所以是dependencies

(2)如果你是前端人员,项目在浏览器运行的,无所谓开发依赖还是生产依赖,只是习惯而已最终都会打包到一起的。

如果你要发npm包,那就要区分下,因为你的包在别人用的时候要找里面的依赖会通过你的package.json 去找你的的依赖,他在安装你的包同时,就把生产依赖的包一块安装了 。

(3)

???正常使用npm install时,会下载dependencies和devDependencies中的模块,当使用npm install --production或者注明NODE_ENV变量值为production时,只会下载dependencies中的模块。

???就是如果上线之后项目还依赖的模块,直接放 dependencies 里就行了,devDependencies 里面就不用放了,开发的时候会自动去调用 dependencies 中的模块的,不需要重复了。
比如,我做项目用到了 vue vuex n-zepto ,这三个模块都是上线之后还需要依赖的,那么我直接放到 dependencies 里,devDependencies 里不需要放。开发的时候功能不会受到任何影响。

四、npm 安装指定版本(按版本安装)

npm install jquery@3.0.0 --save

在package.json中可以看到:

"jquery": "^3.0.0"

1、全局安装

npm install xxx -g  //模块将被下载安装到【全局目录】中

2、本地安装

npm install xxx //则是将模块下载到当前命令行所在目录

3、信息写入

npm install xxx --save   // 简写:npm install xxx -S
npm install xxx --save-dev  // 简写:npm install xxx -D
//安装的同时,将信息写入package.json中项目路径中
--save 将依赖包名称添加到 package.json 文件 dependencies 下
--save-dev 则添加到 package.json 文件 devDependencies 下
--save 是你发布之后还依赖的东西
--save-dev 是你开发时候依赖的东西

注解:比如, babel 是发布时,将 ES6 代码编译成 ES5 ,那么 babel 就是devDependencies。
Vue项目中vue-router,由于发布之后还是依赖vue-router,所以是dependencies。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值