李刚的学习专栏

行胜于言,自强不息!纸上得来终觉浅,绝知此事要躬行!

npm模块管理器

一、npm简介

npm有两层含义。一层含义是Node.js的开放式模块登记和管理系统,网址为http://npmjs.org。另一层含义是Node.js默认的模块管理器,是一个命令行下的软件,用来安装和管理node模块。
npm不需要单独安装。在安装node的时候,会连带一起安装npm。但是,node附带的npm可能不是最新版本,最好用下面的命令,更新到最新版本。
npm采用”语义版本“管理软件包。所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号,c是补丁号。

# 将npm更新到最新版本
$ npm install npm@latest -g
$ npm install npm@0.1.1 -g
# 查看npm的版本和配置
$ npm -v
# npm命令列表
$ npm help
# 各个命令的简单用法
$ npm -l
# 配置信息
$ npm config list -l

二、npm info

# 查看每个模块的具体信息
$ npm info underscore
$ npm info underscore description
$ npm info underscore homepage
$ npm info underscore version
# npm仓库搜索某个模块
$ npm search <搜索词>

四、npm list

# 列出当前目录安装的所有模块
$ npm list
# 列出全局安装的所有模块
$ npm -global list
# npm list命令也可以列出单个模块。
$ npm list underscore

五、npm install

1. 模块可以“全局安装”,也可以“本地安装”。

  • “全局安装”指的是将一个模块直接下载到Node的安装目录中,各个项目都可以调用。
  • “本地安装”指的是将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块。
# “本地安装”某个模块
$ npm install <package name>
# npm也支持直接输入github地址
$ npm install git://github.com/package/path.git
$ npm install git://github.com/package/path.git#0.1.0
# 使用global参数,可以“全局安装”某个模块
$ sudo npm install -global [package name]

2. install命令可以指定所安装的模块属于哪一种性质的依赖关系,即出现在packages.json文件的哪一项中,可以通过npm init自动生成package.json。

  • –save:模块名将被添加到dependencies,可以简化为参数-S。
  • –save-dev: 模块名将被添加到devDependencies,可以简化为参数-D。

npm install默认会安装dependencies字段和devDependencies字段中的所有模块,如果使用production参数,可以只安装dependencies字段的模块。

$ npm install --production
# 或者
$ NODE_ENV=production npm install

六、npm update,npm uninstall

# 升级本地安装的模块
npm update -global [package name]
# 删除本地安装的模块
sudo npm uninstall [package name] -global

七、npm run

npm不经可以用于模块管理,还可以用于执行脚本。package.json文件有一个scripts字段,可以用于指定脚本命令,供npm直接调用。

"scripts": {
    "lint": "jshint **.js",
    "test": "mocha test/"
  }
# 列出scripts属性下的所有命令
npm run
# 执行lint脚本
npm run lint

npm run会创建一个shell,执行指定的命令,并将node_modules/.bin加入PATH变量,这意味着本地模块可以直接运行。也就是说,npm run lint直接运行jshint .js即可,而不用./node_modules/.bin/jshint .js。
注意:npm内置了两个命令简写,npm test等同于执行npm run test,npm start等同于执行npm run start。

八、默认脚本

npm在执行某些命令时,会执行一些默认脚本(前提是这些脚本已经设置了)。

  • prepublish:发布一个模块前执行。
  • publish, postpublish:发布一个模块后执行。
  • preinstall:安装一个模块前执行。
  • install, postinstall:安装一个模块后执行。
  • preuninstall, uninstall:卸载一个模块前执行。
  • postuninstall:卸载一个模块后执行。
  • preversion, version:更改模块版本前执行。
  • postversion:更改模块版本后执行。
  • pretest, test, posttest:运行npm test命令时执行。
  • prestop, stop, poststop:运行npm stop命令时执行。

prestart, start, poststart:运行npm start命令时执行。
prerestart, restart, postrestart:运行npm restart命令时执行。如果没有设置restart脚本,则依次执行stop和start脚本。
npm run为每条命令提供了pre和post两个钩子(hook)。以npm run lint为例,执行这条命令之前,npm会先查看有没有定义prelint和postlint两个钩子,如果有的话,就会先执行npm run prelint,然后执行npm run lint,最后执行npm run postlint。
如果执行过程出错,就不会执行排在后面的脚本,即如果prelint脚本执行出错,就不会接着执行lint和postlint脚本。
另外,不能在pre脚本之前再加pre,即preprelint脚本不起作用。

九、内部变量

scripts字段可以使用一些内部变量,主要是package.json的各种字段。
比如,package.json的内容是{“name”:”foo”, “version”:”1.2.5”},那么变量npm_package_name的值是foo,变量npm_package_version的值是1.2.5。

{
  "scripts":{
    "bundle": "mkdir -p build/$npm_package_version/"
  }
}

十、npm publish

(1)设定个人信息

$ npm set init.author.name "ligang"
$ npm set init.author.email "ligang_WEB@163.com"
$ npm set init.author.url "https://github.com/381510688/my-git"

(2)向npm系统申请用户名

$ npm adduser

(3)登录

$ npm login

(4)<非第一次>要发布新版本的时候,更新软件的版本

$ npm version <update_type> -m "<message>"
npm version patch增加一位补丁号(比如 1.1.1 -> 1.1.2npm version minor增加一位小版本号(比如 1.1.1 -> 1.2.0npm version major增加一位大版本号(比如 1.1.1 -> 2.0.0)。

(5)发布

$ npm publish

[转载请标明出处:http://blog.csdn.net/ligang2585116]

阅读更多

扫码向博主提问

去开通我的Chat快问

ligang2585116

博客专家

纸上得来终觉浅,绝知此事要躬行!
  • 擅长领域:
  • javascript
  • git
  • 前端
版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标明出处:http://blog.csdn.net/ligang2585116! https://blog.csdn.net/ligang2585116/article/details/47703291
个人分类: NodeJS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭