欢迎各位兄弟 发布技术文章
这里的技术是共享的
npm install (with no args, in package dir)
npm install [<@scope>/]<name>
npm install -g @angular/cli #这里@表示范围,一般是公司,或者组织
npm install [<@scope>/]<name>@<tag>
npm install gulp@3.9.1 #这里@表示版本
npm install [<@scope>/]<name>@<version>
npm install [<@scope>/]<name>@<version range>
npm install sax@">=0.1.0 <0.2.0" #这里@表示版本
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install --save esri-loader@1.0.0 在npm中安装固定的版本号package,只需要在其后加 ‘@版本号’
这个可以说是我们 npm 核心一项内容,依赖管理,这个对象里面的内容就是我们这个项目所依赖的 js 模块包。下面这段代码表示我们依赖了 markdown-it
这个包,版本是 ^8.1.0
,代表最小依赖版本是 8.1.0
,如果这个包有更新,那么当我们使用 npm install
命令的时候,npm 会帮我们下载最新的包。当别人引用我们这个包的时候,包内的依赖包也会被下载下来。
我们的package.json文件都是用的上尖括号(范版本)
"dependencies": { |
尖括号的意思是,匹配所有的次要版本,也就是说:
如果当前配置的是 ^1.1.1 |
除此之外还有一种匹配模式是波浪号,匹配第二次要的版本
"dependencies": { |
比如
如果~1.1.1,当最新版本为 1.1.x的时候,下次npm install就会自动更新最新的版本 |
在我们安装Node.js的时候npm就一起安装好,不过有时候我们本机上的npm
不一定是最新版本,可以使用以下命令安装更新。
|
|
运行下面的命令,查看各种信息。
|
|
镜像设置
由于在国内npm官方镜像地址经常被墙,建议设置npm镜像以加速模块下载过程,在这里推荐使用淘宝npm镜像。
|
|
安装cnpm
如果不想修改npm官方镜像,也可以使用淘宝提供的cnpm来代替npm
下载安装npm模块。
|
|
使用cnpm的命令来安装npm模块
|
|
npm init
用来初始化生成一个新的package.json
文件。使用 -y
参数表示你能接受package.json
文件的一堆默认值:
|
|
npm set
用来设置环境变量,等于为npm init
设置了默认值。
例如使用以下命令设置了默认用户名、用户邮箱等信息
|
|
再使用npm config list -l
查看配置信息就能看到所设置的。
|
|
以下命令使得npm install --save
和npm install --save-dev
安装新模块时,允许的版本范围从上尖括号 ^
改成波浪号~
,即从允许小版本升级,变成只允许补丁包的升级。
|
|
波浪线 ~
会匹配小版本号,忽略更高的版本。
比如:~1.2.3 will match all 1.2.x versions but will miss 1.3.0.
上尖括号 ^
会匹配中版本号,忽略更高的版本。
比如:^1.2.3 will match any 1.x.x release including 1.3.0, but will hold off on 2.0.0.
官方文档
npm info
可以查看每个模块的具体信息。比如,查看express
模块的信息
|
|
这个对象的每个成员,都可以直接从info命令查询。
|
|
npm search
命令用于搜索npm仓库,它后面可以跟字符串,也可以跟正则表达式。
|
|
目前存在一个问题是当配置使用淘宝npm镜像后,MacOS上 npm search
命令报错,可以使用 cnpm search
命令来暂时替代。
npm list
命令以树型结构列出当前项目安装的所有模块,以及它们依赖的模块
默认列出当前项目中安装的模块
|
|
加上global参数,会列出全局安装的模块
|
|
将一个模块安装到系统目录中,各个项目都可以调用。一般来说,全局安装只适用于工具模块,比如eslint
和gulp
|
|
将一个模块下载到当前项目的node_modules
子目录,只有当前项目中才能调用这个模块。
|
|
在当前项目根目录下直接使用 npm install
命令直接安装 package.json
中所配置的依赖模块。
npm install
也支持直接输入Github代码库地址。
npm install
命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上@
和版本号
|
|
--save
:模块名将被添加到dependencies
,可以简化为参数-S
--save-dev
: 模块名将被添加到devDependencies
,可以简化为参数-D
--save-exact
参数,会在package.json
文件指定安装模块的确切版本
该命令用来查询使用模块是否已经更新。
查找全局模块是否已经更新
|
|
也可以查看检验当前和历史版本:
|
|
npm update
命令可以更新本地安装的模块
升级当前项目的指定模块
|
|
升级全局安装的模块
|
|
使用-S
或--save
参数,可以在安装的时候更新package.json
里面模块的版本号
npm run
是 npm run-script
的别名用法,用来执行 package.json
中script
对象中配置的脚本命令。
|
|
例如对以上项目执行 npm run test
命令,即可调用执行mocha test/
命令行。
npm run
命令会自动在环境变量$PATH
添加node_modules/.bin
目录,所以scripts
字段里面调用命令时不用加上路径,这就避免了全局安装NPM模块,可以直接运行本地模块。
直接运行npm run
不给出任何参数,就会列出scripts
属性下所有命令
npm run命令还可以添加参数。将参数传到所指定的命令行,需要参数之前要加上两个连词线 --
。
|
|
|
|
等同于
|
|
npm run
为每条命令提供了pre-
和post-
两个钩子(hook)。
以npm run test
为例,执行这条命令之前,npm会先查看有没有定义pretest和posttest两个钩子,如果有的话,就会先执行npm run pretest
,然后执行npm run test
,最后执行npm run posttest
。
|
|
npm link
命令会在npm的全局模块node_modules目录内,生成一个符号链接,指向模块的本地目录。这样我们在开发npm模块的时候,就可以边开发边试用。
1.在模块目录src/myModule
下运行npm link
命令,会在npm的全局模块目录内,生成一个符号链接文件,该文件的名字就是package.json
文件中指定的文件名。这个时候,已经可以全局调用myModule模块了。但是,如果我们要让这个模块安装在项目内,还要下一步操作。
|
|
2.切换到项目目录src/myProject
,再次运行npm link
命令,并指定模块名。然后,就可以在你的项目中加载该模块了
|
|
上面命令等同于生成了本地模块的符号链接
3.在js脚本中就可以通过require的方式来引用该模块了。
|
|
这样一来,myModule的任何变化,都可以直接反映在myProject项目之中。但是,这样也出现了风险,任何在myProject目录中对myModule的修改,都会反映到模块的源码中。
4.如果你的项目不再需要该模块,可以在项目目录内使用npm unlink
命令,删除符号链接
|
|
显示相对于当前目录的,Node模块的可执行脚本所在的目录(即.bin目录)。
用于将当前模块发布到npmjs.com
申请用户名 npm adduser
登录 npm login
发布 npm publish
npm test
内置命令,等同于执行npm run test
npm start
内置命令,等同于执行npm run start
npm stop
内置命令,等同于执行npm run stop
npm restart
内置命令,等同于执行npm run restart
模块用于运行多个scripts
脚本命令,点击查看。
继发执行
|
|
等同于
|
|
并行执行
|
|
等同于
|
|
此模块启动一个HTTP服务器,添加自动刷新功能,具体查看文档
来自 https://fengmiaosen.github.io/2016/11/21/npm-command/