npm小结

0 篇文章 0 订阅

随着一系列基于nodes的应用/工具的出现,nodejs的使用也越来越广泛。无论在node应用的开发,还是使用中,包管理都扮演着一个很重要的作用。NPM(node package manager),作为node的包管理工具,极大地便利了我们的开发工作,所以利用闲暇时间系统的学习了解,在此总结记录一下。

一、 npm应用场景

npm可以让 JavaScript 开发者在共享代码、复用代码以及更新共享的代码上更加方便。

如果你使用 JavaScript 工作了一段时间的话,你一定听说过 npm。当一个JavaScript 开发者为了解决某个问题而编写了一些代码并将其共享出来的话,其他的开发者能够在自己的应用程序中复用这些代码,npm让这些事情变得简单。

如果你使用了其他开发者开发的代码,你就可以很方便地使用 npm 来检查这些代码是否有了新的版本,然后可以下载新版本。

二、npm的使用

通常用npm 安装依赖库的时候,可以直接安装某个依赖库,比如npm install angular-translate。可在项目开发过程中往往多个开发人员同步开发,通常会使用代码托管,比如git。

如果直接用npm安装某个依赖库之后,虽然在你的本地开发是可以正常运行的,而其他开发人员想要获取最新的代码之后项目可以正常运行的话,还需要再执行一次npminstall angular-translate,如果引入了多个依赖就更加繁琐了。

所以项目开发过程中涉及到依赖库的引入时,我们通常要将新引入的依赖库更新到package.json中,这样即使更新了多个依赖库之后,其他的开发人员更新代码后只需执行一次npm install就可以了。

将新引入的依赖库加到package文件里:

npm install angular-translate –-save

而如果某个依赖库只是在开发过程中需要的,通常会将依赖库放在devDependencies里面:

npm install angular-translate –-save-dev

dependencies与devDependencies的区别:

- devDependencies下列出的模块,是我们开发时用的依赖项,像一些进行单元测试之类的包,比如grunt-contrib-uglify,我们用它混淆js文件,它们不会被部署到生产环境。

-   dependencies下的模块,则是我们生产环境中需要的依赖,即正常运行该包时所需要的依赖项。

有时需要引入某个特定版本的依赖库:

npm install 【package name】@【version number】

比如,npm install angular-translate@2.8.1

安装最新版本:

npm install 【package name】@latest

比如,npm install angular-translate@latest

全局安装:

npm install -g 【package name】

比如,npm install -g grunt-cli

卸载某个依赖库:

npm uninstall 【package name】

比如,npm uninstall angular-translate

三、npm 版本号~和^

~和^的作用和区别是什么呢?

  • ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
  • ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0

当然你可以指定特定的版本号,直接写1.2.3,前面什么前缀都没有,这样固然没问题,但是如果依赖包发布新版本修复了一些小bug,那么需要手动修改package.json文件;~和^则可以解决这个问题。

但是需要注意^版本更新可能比较大,会造成项目代码错误,比如这篇文章(http://blog.csdn.net/u014291497/article/details/54427103)的问题就是因为package.json使用^1.5.7造成的,1.6版本的包与现有代码不兼容。

所以建议使用~来标记版本号,这样可以保证项目不会出现大的问题,也能保证包中的小bug可以得到修复。

或者版本号写*,这意味着安装最新版本的依赖包,但缺点同上,可能会造成版本不兼容,慎用!

  • version Must match version exactly
  • >version Must be greater than version
  • >=version etc
  • <version
  • <=version
  • ~version "Approximately equivalent to version" See semver
  • ^version "Compatible with version" See semver
  • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
  • http://... See 'URLs as Dependencies' below
  • * Matches any version
  • "" (just an empty string) Same as *
  • version1 - version2 Same as >=version1 <=version2.
  • range1 || range2 Passes if either range1 or range2 are satisfied.
  • git... See 'Git URLs as Dependencies' below
  • user/repo See 'GitHub URLs' below
  • tag A specific version tagged and published as tag See npm-dist-tag
  • path/path/path See Local Paths below


npm中文文档:

https://www.npmjs.com.cn/


以上总结记录是以往开发中遇到的一些知识点,条理不清之处还请见谅。


如有不正之处,还望不吝指出~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值