您的位置:首页 > 产品设计 > 产品经理

npm小结

2018-02-01 12:06 260 查看
随着一系列基于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/




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

如有不正之处,还望不吝指出~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  npm package.json 版本号