npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。

0、查看安装路径

1
npm root -g

1、安装Node模块

1
npm install moduleNames

安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。

node的安装分为全局模式和本地模式。
一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。
在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。

全局安装命令为

1
$npm install -g moduleName

获知使用

1
$npm set global=true

来设定安装模式

1
$npm get global

可以查看当前使用的安装模式。

1
npm install express

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

1
npm install <name> -g

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

1
npm install <name> --save

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

1
npm info name

获取模块相关信息

2、查看node模块的package.json文件夹

1
npm view moduleNames

注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用

1
$npm view moduleName labelName

3、查看当前目录下已安装的node包

1
npm list

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

4、查看帮助命令

1
npm help

5、查看包的依赖关系

1
npm view moudleName dependencies

6、查看包的源文件地址

1
npm view moduleName repository.url

7、查看包所依赖的Node的版本

1
npm view moduleName engines

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

1
npm help folders

9、用于更改包内容后进行重建

1
npm rebuild moduleName

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

1
npm outdated

11、更新node模块

1
npm update moduleName

12、卸载node模块

1
npm uninstall moudleName

13、一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访问npm的json文件夹的方法如下

1
npm help json

此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打开。

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

1
npm search packageName

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

1
npm init

16、查看当前包的安装路径

1
npm root

查看全局的包的安装路径

1
npm root -g

17、查看npm安装的版本

1
npm -v

18、发布模块

1
2
3
4
npm publish
或者发布测试版 必须要加tag
修改package.json中 "version": "1.0.6-beta.1",
npm publish --tag beta

19、删除发布的包

1
npm unpublish gulp-css-spritesmith-zhp@1.0.0

19、撤销发布自己发布过的某个版本代码

1
npm unpublish <package>@<version>

20、清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人

1
npm cache clear

21、注册npm –cnpm也要先注册后登陆

接下来我们可以使用以下命令在 npm 资源库中注册用户(使用邮箱注册):

1
2
3
4
$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com

可以撤销发布自己发布过的某个版本代码。

22.登陆npm

1
npm login

23 测试包的安装

模块的根目录下使用npm的link命令可以在本地测试包。
这个命令让你的包可以在你的机器上全局使用

1
sudo npm link

你可以在 link 命令后面放上包名把它装在一个单独的测试目录中:

1
npm link elf

包装好之后,在Node REPL中执行 require 函数引入这个模块来测试一下,像下面的代码这样。

1
2
3
4
5
6
node
> require('elf');
{ version: '0.0.1',
initPathData: [Function],
shorten: [Function],
expand: [Function] }

24 解除测试包-解除全局可用

1
sudo npm unlink

25 添加私有依赖项

1
2
3
4
5
6
"dependencies" : {
"optimist" : ">=0.1.3",
"iniparser" : ">=1.0.1",
"mingy": ">=0.1.2",
"elf": "git://github.com/mcantelon/node-elf.git" //这个是私有库(私有模块)
},

私有模块也应该包含package.json文件。
为了确保这些模块不会因为疏忽被发布出去,你可以在package.json文件中将 private 属性设为 true :

1
"private": true,

26 安装非官方源

1
2
3
4
5
//单个非官方
npm install underscore --registry=http://registry.url

//所有都采用非官方的镜像
npm config set registry http://registry.url

例子:

1
2
npm set registry http://zzfe.58corp.com/npm
npm adduser --registry http://zzfe.58corp.com/npm

27 NPM钩子命令

package.json中scripts字段的提出就是让包在安装或者卸载等过程中提供钩子机制

1
2
3
4
5
6
"scripts": {
"preinstall": "preinstall.js",
"install": "install.js",
"uninstall": "uninstall.js",
"test": "test.js"
}

执行 npm install 时,preinstall指向的脚本将会被加载执行,然后install指向的脚本会被执行。

28 管理包权限

使用npm owner帮助你管理包的所有者

1
2
3
4
5
6
7
8
$ npm owner ls eventproxy           //查看所有者
npm http GET https://registry.npmjs.org/eventproxy
npm http 200 https://registry.npmjs.org/eventproxy
jacksontian <shyvo1987@gmail.com>

npm owner ls <package name>
npm owner add <user> <package name> //添加包所有者
npm owner rm <user> <package name> //删除包所有者

29 分析包

找到当前路径下能够通过模块路径找到的所有包,并生成依赖树

1
npm ls

30 script代替gulp使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"scripts": {
"clean": "rimraf dist/*",
"copy": "copyfiles -f ./src/index.html ./src/favicon.ico ./dist",
"dist": "npm run copy & webpack --env=dist",
"lint": "eslint ./src",
"posttest": "npm run lint",
"release:major": "npm version major && npm publish && git push --follow-tags",
"release:minor": "npm version minor && npm publish && git push --follow-tags",
"release:patch": "npm version patch && npm publish && git push --follow-tags",
"serve": "node server.js --env=dev",
"serve:dist": "node server.js --env=dist",
"start": "node server.js --env=dev",
"test": "karma start",
"test:watch": "karma start --autoWatch=true --singleRun=false"
}

如果想运行serve:dist命令

1
2
//记住所有前缀都是npm run
npm run serve:dist

31.管理代理工具nrm

1
npm install -g nrm

32.添加代理

1
nrm add rnpm http://zzfe.rcnpm.58corp.com/

33.查看所有代理

1
nrm ls

34.切换代理

1
nrm use local

35.安装github上的包

1
2
3
4
npm install git+ssh://git@github.com:xxx/xxx.git#master --save-dev
npm install git+ssh://git@github.com:npm/npm.git#v1.0.27
npm install git+https://isaacs@github.com/npm/npm.git
npm install git://github.com/npm/npm.git#v1.0.27

36.安装代理上的包

1
npm install --registry=http://zzfe.58corp.com/npm

37.查看全局目录

1
npm config ls

38.查看全局配置

1
npm config list

39.管理Node版本

同43

40.npm script 执行两个窗口程序

concurrently插件

1
"debug": "concurrently \"node-inspector --web-port 9090\" \"node --debug server\"",

41.自定义命令行工具

自定义命令行
其实是#42自定义脚手架的一小部分

42.自定义脚手架

自定义脚手架

42.清缓存

1
2
3
npm cache clean
# 或
npm cache verify

43.管理node工具

window:nvm-windows
Mac:nvmn

1
2
MAC: nvm
Window: gnvm

44.软连接创建

1
2
mklink /D node_modules "..\node_modules"
快捷方式位置 目标文件位置

45、package.json控制启动命令

1
2
3
"bin": {
"zz": "dist/zz.js"
},

46、管理npm包上传指定文件

package.json files & .npmignore

47、查看某个组件的版本号

1
npm list @magic/magic-common-config

参考文献

48、增加权限

1
npm owner add zhangpen @magic/magic-slide
← Prev Next →