npm入门文档

前言

NPM做为Node的模块管理和发布工具,做用与Ruby的gem、Python的pypl或setuptools、PHP的pear和.Net的Nuget同样。在当前前端工程化极速狂奔的年代,即便不作nodejs的开发,也须要学习和使用NPM的,谁叫grunt、bower、yeoman这一堆的工具都经过NPM发布呢?! 本文为针对非nodejs的开发者整理的NPM使用说明。固然最好的教程仍是官网的啦!html

2、什么是包?

nodejs以包的形式组织程序模块,而包的定义却十分简单——包含文件内容符合规范package.json文件的目录或归档文件。并经过”package-name”@”version”来惟一标识每一个包。前端

3、灵魂——package.json

包的定义和NPM都围绕着package.json文件作文章,package.json文件其实就至关于JAVA中的MANIFEST.MF文件,用于存放模块的名称、版本、做者、机构、模块入口、依赖项等信息。首先咱们经过node

npm init git

命令在当前工做目录下以用户引导的方式建立一个全新的package.json文件。而后经过github

npm help json shell

命令打开帮助文档,并根据实际的项目需求自行初始化package.json的项目便可。下面将对基础配置项进行叙述。npm

name

必选项,表示模块名称。命名时不能包含js、node、和url中须要转义的字符,不能以._为开头。json

version

必选项,表示模块的版本号。版本号以前端工程化

主版本号(Major).副版本号(Minor).补丁版本号(Patch) 数组

构成(如1.2.0)。 而engines、dependencies和devDependencies等配置项中可以使用语义化版本号语法,具体以下:

标记

介绍

1.1.1

精确下载安装1.1.1版本的包

>、=1.1.1

分别表示下载安装大于、小于等于、大于等于1.1.1版本的包

1.0.1-1.1.1

表示版本范围是包含1.0.1到1.1.1版本的包

~1.1.1

表示尽可能采用靠近1.1.1版本的包,但可用的包版本范围是1.1.1-0到1.1.x-x版本的包

~1.1

表示下载安装1.1.x-x版本的包

~1

表示下载安装1.x.x-x版本的包

^1.1.1

表示包版本范围是1.1.1到1.x.x-x

^0.1.1

表示包版本范围是1.1.1到1.1.x-x

^1.1

表示包版本范围是1.1.x-x到1.x.x-x

^1

表示包版本范围是1.x.x-x

空格、x、

表示任意版本便可

其余

两个版本选择器间,空格表示and关系,”||” 表示or关系。

main

必选项,模块入口文件相对路径(相对于模块根目录)。

description

可选项,表示模块功能描述,显示在

npm search "package-name"

keywords

可选项,数组类型,表示模块的关键字,显示在

npm search "package-name"

author

可选项,表示发起者信息。示例以下:

{
"author": {
"name": "luoyue",
"email": "luoyue@zz173.com",
"url": "https://post.zz173.com"
},
}

engines

可选项,依赖的node版本。示例以下:

{
"engines":{
"node": ">= 0.8.0"
}
}

repository

可选项,源码托管地址。示例以下:

{
"repository": {
"type": "git",
"url": "git+https://github.com/rozbo/hexo-hrefmd.git",
},
}

scripts

可选项,自定义在cli中输入

npm "script"

时实际执行的程序。npm默认提供大量的script供咱们调用。

dependencies、devDependencies

可选项,用于配置模块的生产环境依赖包和开发环境依赖包。当执行npm install时,npm会根据这两个配置项的值去下载安装相关的依赖包。二者的区别是devDependencies是模块开发过程的依赖包(如:grunt只在开发时有用的模块),而且当其余模块须要依赖当前模块时,当经过npm install “package-name”时会自动下载安装dependencies的包而不会下载devDependencies的包。

4、NPM的配置信息

如今咱们对package.json有必定的了解了,如今就到理论+实践时间咯。在实践以前咱们要先配置一下NPM的资源库(国内被墙,你懂的),内网用户还要配置一下网络代理地址等信息。

查看部分配置信息——

npm config ls

查看全部配置信息——

npm config ls -l

修改配置信息的三种方式:

1. 直接修改配置文件

修改用户家目录的.npmrc文件(没有则新建一个);

2. 经过命令修改

npm config set "config" "config-value"

命令;

npm config set registry http://registry.npm.taobao.org/
npm config set proxy http://proxy.com:8081/

3. 经过追加命令

好比–registry=”registry-uri”等命令可选项临时配置。

npm install grunt –registry=http://registry.npm.taobao.org

5、查找、安装/卸载、更新依赖包

在安心玩耍以前咱们要先了解一件事件,就是包的做用范围分为 全局本地 两种。

包的种类

全局包

用做在cli上直接调用,而没法在项目中经过require导入依赖包。如将grunt-cli安装到全局时,则可在cli中输入grunt调用了!

npm install -g grunt-cli

cmd或shell中直接调用

grunt

本地包

用做在项目中经过require导入依赖包,供项目使用。

那么全局和本地的依赖包究竟是存放在哪里的呢?经过

npm root -g

npm root

可分别查看全局和本地的依赖包下载安装的绝对目录了。本地的依赖包会存放在当前项目根目录下的node_modules目录下。

如今咱们能够正式操做依赖包了!

包的搜索

搜索依赖包,

npm search "package-name"

查看依赖包的package.json信息,

npm view "package-name"

另外咱们能够单独查看package.json某个配置。

查看包的依赖关系

npm view "package-name" dependencies

查看包的源文件地址

npm view "package-name" repository.url

查看包所依赖的node版本号

npm view "package-name" engines

查看本地包信息

查看当前项目的本地依赖包,

npm list

查看全局依赖包,

npm list -g

查看本地依赖包是否不是最新版

npm outdated "package-name"

安装、卸载、更新包

安装包

本地

npm install "package-name"

全局

npm install -g "package-name"

这样会安装最新版的包,若须要安装特定版本,则

npm install "package-name"@"version"

卸载包

卸载本地

npm uninstall "package-name"

卸载全局

npm uninstall -g "package-name"

更新包

更新本地

npm update "package-name"

更新全局

npm update -g "package-name"

6、发布包

站在使用者的角度,掌握上述章节的内容已经足够了,但当咱们开发出好玩的项目并且又想和你们分享时,那么下面的内容就不得不了解了!

1.注册一个registry账号,

npm adduser

,而后根据引导输入账号、密码和邮箱地址。

2. 登陆registry账号,

npm login

,登陆信息会保存在客户端。

3. 发布项目,

npm publish

。(建议发布版本从1.0.0开始)

4.注意

通过上述步骤咱们就可发布模块了。但这个时候你也许会考虑到项目中部分目录和文件不该该被发布出去,应该有一个像.gitignore的文件来配置这些排除项。看来你猜对了,那就是.npmignore文件,不过npm作得更灵活一些!

  1. 默认不带.npmignore文件,若项目中带.gitignore则使用.gitignore文件内容的配置项;

  2. 若带.npmignore文件则不使用.gitignore文件中的配置项;

  3. 即便配置.npmignore文件,也没法排除package.json和README.*文件;

  4. NPM内置设定如下文件必须被排除

.*.swp
.*.swp
._*
.DS_Store
.git
.hg
.lock-wscript
.svn
.wafpickle-*
CVS
npm-debug.log

7、总结

如今咱们终于能够安心下载各类node依赖包来推动前端工程化的步伐了!

8、参考

相关文章
相关标签/搜索