TL;DR
- npm -l 查看所有命令用法
- npm (command) -l 某命令的快捷用法
- npm install 安装模块
- npm uninstall 卸载模块
- npm update 更新模块
- npm outdated 检查模块是否已经过时
- npm ls 查看安装的模块
- npm init 在项目中引导创建一个package.json文件
- npm help 查看某条命令的详细帮助
- npm run 运行脚本
介绍npm
npm是Node.js的包管理工具,包就是指各种 javascript 库。
可以管理项目中的各种包包。
可以发布自己的包包。
官网下载node.js,npm便会一起安装。
祭上官网文档
新手可以借助how-to-npm
直接安装这个插件,按照教程走。
安装完之后,输入
就会看到12个小练习,也就是基本命令的使用了。
- how-to-npm print 重新显示当前的练习
- how-to-npm verify 验证是否完成一个练习
- how-to-npm solution 显示当前练习的解决方案
npm本身的一些命令
对于一般的包,以下命令也是适用的。如webpack -h
检测npm的版本(通常也会用这个来测试是否安装成功)
|
|
!!!查看所有命令的用法(统揽使用命令)
|
|
!!!查看某命令的快捷使用方法
|
|
查看npm所有命令
|
|
大概有以下命令
access, adduser, bin, bugs, c, cache, completion, config,
ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
explore, get, help, help-search, i, init, install,
install-test, it, link, list, ln, login, logout, ls,
outdated, owner, pack, ping, prefix, prune, publish, rb,
rebuild, repo, restart, root, run, run-script, s, se,
search, set, shrinkwrap, star, stars, start, stop, t, team,
test, tst, un, uninstall, unpublish, unstar, up, update, v,
version, view, whoami
查看某命令的具体用法
|
|
管理配置文件
|
|
运行命令看下有些使用方式,一般用于设置配置的一些参数。
升级npm
|
|
查看npm的介绍
|
|
package.json
使用 npm 来管理的 javascript 项目一般都有一个package.json文件。它定义了这个项目所依赖的各种包,以及项目的配置信息(比如名称、版本、依赖等元数据)
重要字段
- name - 包名。
- version - 包的版本号。
- description - 包的描述。
- homepage - 包的官网 url 。
- author - 包的作者姓名。
- contributors - 包的其他贡献者姓名。
- dependencies - 指定项目运行所依赖的模块。
- devDependencies - 指定项目开发所依赖的模块。
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 * express,然后用户安装它,然后require(“express”)。
- keywords - 关键字
- bin - 用来指定各个内部命令对应的可执行文件的位置。
- scripts - 指定了运行脚本命令的npm命令行缩写。
- engines - 依赖node和npm版本,如果小于这个版本就好抛错。一般加上这个。npm升级挺快。
一个完整的package.json
123456789101112131415161718192021222324252627282930{"name": "reactnotes","version": "1.0.0","description": "react 教程","main": "./index.js","dependencies": {"react": "^15.4.1","react-dom": "^15.4.1"},"devDependencies": {"webpack-dev-server": "^1.16.2"},"scripts": {"start": "node index.js"},"repository": {"type": "git","url": "git+https://github.com/atlantis1024/ReactNotes.git"},"author": "victor","license": "Apache-2.0","bugs": {"url": "https://github.com/atlantis1024/ReactNotes/issues"},"homepage": "https://github.com/atlantis1024/ReactNotes#readme","engines": {"node": ">= 6.9.0","npm": ">= 3.0.0"}}
package.json里面的版本声明
dependencies 和 devDependencies是依赖的包包及其版本号。
但是版本号的声明各种各样,前三者,最常见,一般默认是^version
。
- version :安装一个确定的版本,遵循“大版本.次要版本.小版本”的格式规定。如:1.0.0。
- ~version :以 ~1.0.0 来举例,表示安装1.0.x的最新版本(不低于1.0.0)。但是大版本号和次要版本号不能变。
- ^version :以 ^1.0.0 来举例,表示安装1.x.x的最新版本(不低于1.0.0),但是大版本号不能变。
- 1.2.x :表示安装1.2.x。
、>=、<、<= :可以像数组比较一样,使用比较符来限定版本范围。
- version1 - version2 :相当于 >=version1 <=version2.
- range1 || range2 :版本满足range1 或 range2 两个限定条件中任意一个即可。
- tag :一个指定 tag 对应的版本。
- 或 “” (空字符串):任意版本。
- latest :最新版本。
- http://… 或 file://… :你可以指定http或本地文件路径下的包作为版本。
- git… :参考下面的“直接将 Git Url 作为依赖包版本”
- user/repo :参考下面的“直接将 Git Url 作为依赖包版本”
git Url形式的例子:12345git://github.com/user/project.git#commit-ishgit+ssh://user@hostname:project.git#commit-ishgit+ssh://user@hostname/project.git#commit-ishgit+http://user@hostname/project/blah.git#commit-ishgit+https://user@hostname/project/blah.git#commit-ish
举例
生成pakage.json
|
|
就会生成一个package.json的文件。
如果想生成默认package.json,可以执行npm init -y,连交互式界面都不会出现。
另外需要注意,npm init的时候需要输入用户字段,如果还没有设置npm用户,需要通过npm addUser设置。
模块的常用命令
安装和删除一个模块
运行以下命令:
npm install作为npm最重要的功能和最常用的功能,这里只介绍三个非常有用的选项–global,–save,–save-dev。
–global可以简写成-g,–save可以简写成-S,–save-dev可以简写成-D,注意大写。
npm uninstall和npm install接受同样的选项和参数。
-g是安装在全局,然后可以使用命令。
–save的作用是在package.json的dependencies字段增加或者修改一个安装包和版本号名值对。
–save-dev则是修改devDependencies,这样就不用安装了某个包之后手动修改package.json,npm已经帮我们把包依赖和版本管理做好了。
全局安装的包默认都存在C:\Users\Administrator\AppData\Roaming\npm下,这是windows版的,其他版本不懂。
其他在项目根目录下的node_modules文件夹里
案例是
显示安装的所有模块
运行命令:
查看某模块的具体信息
|
|
但是这信息太多,一般直接查找有tag的版本
检测当前安装的所有npm包是否有更新
|
|
列出可以更新的包,如果没有任何输出,那么恭喜你,所有的包都是不需要更新的。
升级某模块
|
|
运行脚本命令
|
|
如果在 package.json 文件中的 scripts 字段定义了命令,就可以使用 npm run 来执行脚本命令。
假设 package.json 文件中的 scripts 字段如下定义:
- npm run test :相当于执行 mocha 命令。它会开始执行测试框架 Mocha 。
- npm run lint :相当于执行 eslint lib bin hot scripts 命令。它会开始执行 eslint 检查。
- npm run prepublish :相当于执行 npm run test 和 npm run lint 两条命令。现在你了解如何复合命令了吧。
- npm start :只有start不用run,相当于执行 node index.js 。Node.js 启动一个服务的入口脚本。
项目的版本
npm包的版本号一般都是x.y.z的形式。
其中x表示主版本号,通常有重大改变或者达到里程碑才改变;
y表示次要版本号,或二级版本号,在保证主体功能基本不变的情况下,如果适当增加了新功能可以更新此版本号;
z表示尾版本号或者补丁号,一些小范围的修修补补就可以更新补丁号。
查看当前所有模块的版本:
第一版本通常是0.0.1或者1.0.0,当修改了代码,需要更新版本号重新发布到npm,直接使用npm version
x.y.z => major.minor.version
三个选项分别对应三部分的版本号,每次运行命令会导致相应的版本号递增一,同时子版本号清零。
- npm version patch 则 z+1
- npm version minor 则 y+1 && z=0
- npm version major 则 x+1 && y=0 && z=0
当然也可以粗暴的这样1npm version 1.12.9
每次发布项目的时候,记得更新版本号。
如果npm包同时又是一个git仓库,在运行了npm version
给项目增加备注
有时候安装模块的时候会有以下警告
这样项目怎么使用,用户可能比较困惑。
所以尽量完善这些备注。
前两者,在npm init
的时候填写description和reponsitory即可。
最后一个在根目录下添加README.md即可。
新建npm账户
新建npm的用户,运行
设置账号密码之类
在运行下面命令,就知道自己的信息
上面已经登录账户
因此可以更新init,将username换成刚设置的
更新package.json.
发布npm
首先去npm注册账号,然后
就可以发布自己的包了
删除包,有发布就有删除,删除好像有个限制,如果大于24小时,需要联系npm管理员删除。
npm包之间的深度依赖关系
基本从npm3开始已经变成扁平化结构,具体参照玩转npm。
但每次安装/卸载了包之后最好重新执行npm dedupe,因为这样会重新计算包的依赖关系,以保证包结构是最优的。
设置发布的标签
目前知道的标签有beta和latest,next
怎么设置呢
|
|
这样这个版本就设置为beta版
|
|
就可以看到有dist-tag这项
删除发布的标签
有时候需要删除beta