天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
乐游原上清秋节,咸阳古道音尘绝。
音尘绝,西风残照,汉家陵阙。
------《忆秦娥·箫声咽》
文章目录
- npm命令汇总
-
- 1. npm install 安装模块
- 2. npm uninstall 卸载模块
- 3. npm ls 查看安装的模块
- 4. npm outdated 检查模块是否已经过时
- 5. npm update 更新模块
- 6. npm help 查看某条命令的详细帮助
- 7. npm init 初始化项目
- 8. npm root 查看包的安装路径
- 9. npm config 管理npm的配置路径
- 10. npm cache 管理模块的缓存
- 11. npm start 启动模块
- 12. npm stop 停止模块
- 13. npm restart 重新启动模块
- 14. npm test 测试模块
- 15. npm version 查看模块版本
- 16. npm view 查看模块的注册信息
- 17. npm publish 发布模块
- 18. npm access 为发布的包设置访问级别
- 19. npm package.json的语法
node的下载、安装、配置和使用(node.js下载安装和配置、npm命令汇总、cnpm的使用)
npm命令汇总
1. npm install 安装模块
1.1 语法
不加任何参数,会根据package.json文件中列出的所有项下载
npm install
注:若没有package.json文件则会报错
加路径和模块名的语法
npm install [<@scope>/] <name>
npm install [<@scope>/] <name>@<tag>
npm install [<@scope>/] <name>@<version>
npm install [<@scope>/] <name>@<version range>
npm install <tarball file>
npm install <tarball url>
npm install <folder>
参数
alias:npm i
common options:[-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [--dry-run]
1.2 举例
安装包时,默认会安装最新的版本
npm install gulp
也可以指定版本安装
npm install gulp@3.9.1
安装后将信息保持到项目的package.json文件中
1.3 参数
install 参数与描述
| 参数 | 描述 |
|---|---|
| -S或--save | 安装包信息将加入到dependencies(生产阶段的依赖) |
| -D或--sava-dev | 安装信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用这个 |
| -O或--save-optional | 安装包信息将加入到optionalDependencies(可选阶段的依赖) |
| -E或--save-exact | 精准安装指定模块版本 |
项目对模块的依赖可以用一下三种方式表示,当前假设项目版本号为1.1.0
兼容模块新发布的补丁版本:~1.1.0、1.1.x、1.1
兼容模块新发布的小版本、补丁版本:^1.1.0、1.x、1
兼容模块新发布的大版本、小版本、补丁版本:*、x
1.4 参数举例
以下以gulp举例
1.4.1 -S
将gulp安装包信息加入dependencies生产阶段的依赖中
npm install gulp --save
或
npm install gulp -S
然后会在package.json文件中的dependencies字段中看到
"dependencies":{
"gulp":"^3.9.1"
}
1.4.2 -D
将gulp安装包信息加入devDependencies开发阶段的依赖中
npm install gulp --save-dev
或
npm install gulp -D
然后会在package.json文件中的devDependencies字段中看到
"devDependencies":{
"gulp":"^3.9.1"
}
1.4.3 -O
将gulp安装包信息加入optionalDependencies生产阶段的依赖中
npm install gulp --save-optional
或
npm install gulp -O
然后会在package.json文件中的dependencies字段中看到
"dependencies":{
"gulp":"^3.9.1"
}
1.4.4 -E
将gulp安装包信息加入dependencies生产阶段的依赖中
npm install gulp --save-exact
或
npm install gulp -E
输入命令
npm install gulp -ES
dependencies字段的gulp的版本号前的^符号消失
然后会在package.json文件中的dependencies字段中看到
"dependencies":{
"gulp":"3.9.1"
}
模块依赖被写入package.json文件后,
其他人使用npm install可根据package.json中dependencies配置安装所有依赖包
1.4.5 本地和全局安装
本地安装gulp
npm install gulp
全局安装
npm install gulp -g
-g或--global都可以
2. npm uninstall 卸载模块
2.1 语法
卸载模块的语法
npm uninstall [<@scope>/]<pkg>[@<version>]...[-S|--save|-D|--save-dev|-O|--save-optional]
aliases:remove,rm,r,un,unlink
2.2 举例
卸载开发版本的模块
npm uninstall gulp --save-dev
3. npm ls 查看安装的模块
3.1 语法
已安装的模块的查看命令
npm ls [[<@scope>/]<pkg>...]
aliases:list,la,ll
3.2 举例
查看全局安装的模块和依赖
npm ls -g
4. npm outdated 检查模块是否已经过时
语法
npm outdated [[<@scope>/]<pkg>...]
该命令会列出所有已经过时的包,可以及时进行更新
5. npm update 更新模块
5.1 语法
更新模块语法
npm update [-g] [<pkg>...]
6. npm help 查看某条命令的详细帮助
6.1 语法
帮助命令语法
npm help <term> [<terms..>]
6.2 举例
查看install命令的所有帮助选项信息
npm help install
该命令的执行逻辑是,系统在默认的浏览器或者默认的编辑器中打开本地nodejs安装包的文件/nodejs/node_modules/npm/html/doc/cli/npm-install.html
7. npm init 初始化项目
执行该命令会在项目中创建一个package.json文件
安装包信息可保持到项目的package.json文件中,以便后后续的其他项目开发或其他成员合作使用,可根据package.json下载项目依赖
语法
npm init [-f|--force|-y|--yes]
8. npm root 查看包的安装路径
查看包的安装路径的命令如下
npm root [-g]
该命令会输出node_modules的路径
9. npm config 管理npm的配置路径
使用config参数管理npm的配置路径
9.1 语法
管理npm配置路径的语法
npm config set <key> <value> [-g|--global]
npm config get <key>
npm config delete <key>
npm config list
npm config edit
npm get <key>
npm set <key> <value> [-g|--global]
9.2 举例
关于config参数用的最多的是代理的设置,解决npm安装模块失败的问题
如公司内网由于防火墙的原因无法完成各个模块的安装,此时设置代理可以解决问题
npm config set proxy=http://dev-proxy.oa.com:8080
如国内网络环境,某ip地址被墙隔开了,国内好心人搭建镜像地址,此时设置镜像地址可用
npm config set registry="http://r.cnpmjs.org"
也可临时配置镜像地址,如配置淘宝镜像,命令如下
npm install -g cnpm --registry=https://registry.npm.taobao.org
10. npm cache 管理模块的缓存
cache参数用来管理模块的缓存
10.1 语法
管理模块的缓存的语法
npm cache add <tarball file>
npm cache add <folder>
npm cache add <name>@<version>
npm cache ls [<path>]
npm cache clean [<path>]
10.2 举例
常用命令就是清除npm本地缓存
npm cache clean
11. npm start 启动模块
启动模块
11.1 语法
启动模块的语法
npm start [-- <args>]
该命令卸载package.json文件的scripts的start字段中,可自定义命令来配置一个服务器环境和安装一系列的必要程序
如
"scripts":{
"start":"gulp-ws"
}
此时在cmd中输入npm start命令相当于执行gulpfile.js文件自定义的watch和server命令
如果package.json文件没有设置start,则将直接启动node server.js
12. npm stop 停止模块
语法
npm stop [-- <args>]
13. npm restart 重新启动模块
语法
npm restart [-- <args>]
14. npm test 测试模块
语法
npm test [-- <args>]
npm tst [-- <args>]
该命令卸载package.json文件scripts的test字段中,可以自定义该命令来执行一些操作
如
"scripts":{
"test":"gulp release"
}
此时在cmd中输入npm test命令相当于执行gulpfile.js文件自定义的release命令
15. npm version 查看模块版本
语法
npm version [<newversion>|major|minor|patch|premajor|preminor|prepatch|prerelease|from-git]
npm [-v|--version] to print npm version
npm view <pkg> version to view a package's published version
npm ls to inspect current package/dependecy versions
查看模块的版本
npm version
16. npm view 查看模块的注册信息
16.1 语法
查看模块注册信息的语法
npm view [<@scope>/] <name> [@<version>] [<field> [.<subfield>]...]
aliases:info,show,v
16.2 举例
查看模块的依赖关系
npm view gulp dependencies
查看模块的源文件地址
npm view gulp repository.url
查看模块的贡献者,包含邮箱地址
npm view npm contributors
17. npm publish 发布模块
语法
npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>]
Publishes . if no argument supplied
Sets tag latest if no --tag specified
18. npm access 为发布的包设置访问级别
语法
npm access public [<package>]
npm access restricted [<package>]
npm access grant <read-only|read-write> <scope:team> [<package>]
npm access revoke <scope:team> [<package>]
npm access ls-packages [<user>|<scope>|<scope:team>]
npm access ls-collaborators [<package> [<user>]]
npm access edit [<package>]
19. npm package.json的语法
英文文档原文地址https://docs.npmjs.com/files/package.json
19.1 默认值
npm会根据包内容设置一些默认值
举例
1
"scripts":{
"start":"node server.js"}
如果包的根目录有server.js文件,npm会默认将start命令设置为node server.js
2
"scripts":{
"preinstall":"node-waf clean || true; node-waf configure build"}
如果包的根目录有wscript文件,npm会默认将preinstall命令用node-waf进行编译
3
"scripts":{
"preinstall":"node-gyp rebuild"}
如果包的根目录有binding.gyp文件,npm会默认将preinstall命令用node-gyp进行编译
4
"contributors":[...]
如果包的根目录有AUTHORS文件,npm会默认逐行按Name (url)格式处理,邮箱和url是可选的,#号和空格开头的行会被忽略
19.2 name
在package.json中最终要的是name和vesion字段,这俩是必须的,如果没有则无法install
name和version一起组成的标识在json中是唯一的,改变包应该同时改变version
注意:
- name是名字
- node和js不能包含在名字中,因为写了package.json就会被定为js,不过可以用engine字段指定引擎
- 这个name会作为在URL的一部分、命令行的参数或者文件夹的名字,任何non-url-safe的字符都是不能用的
- 这个名字可能会作为参数被传入require(),所以他应该比较短,但要见名知意
- 起这个名字的时候需要去npm registry查看一下这个名字是否已经被使用,网站http://registry.npmjs.org/
19.3 version
version必须能被node-semver解析,它被包在npm的依赖中,如果要自己用,可执行npm install semver
19.4 description
描述,存放简介、字符串等内容,方便在npm search中搜索
19.5 keywords
关键字,存数组、字符串,同样是为了在npm search中搜索
19.6 bugs
项目的提交问题的url和(或)邮件地址
{
"url":"http://github.com/owner/project/issues",
"email":"project@hostname.com"
}
19.7 license
指定一个许可证,定义使用的权利和限制
如,用一个像BSD或者MIT这样的通用许可证,只需要指定一个许可证的名字
{
"license":"BSD"}
如果有更复杂的许可条件,或像提供更多的细节,可以如下
"license":[
{
"type":"Mylicense",
"url":"http://github.com/owner/project/path/to/license"
}
]
19.8 repository
指定代码存放的位置,如git仓库在github上,那么npm docs命令就能找到
如下
"repository":{
"type":"git",
"url":"http://github.com/isaacs/npm.git"
}
"repository":{
"type":"svn",
"url":"http://v8.googlecode.com/svn/trunk/"
}
URL应该是公开的,能直接被未经过修改的版本控制程序处理的url,不应该是一个html项目页面,因为他是给计算机看的
19.9 scripts
scripts是一个由脚本命令组成的hash对象,他们在包不同的声明周期中被执行
key是生命周期事件,value是要运行的命令
参考上面的npm start、npm test命令
19.10 config
config hash可以用来配置用于包脚本中的跨版本参数,在实例中,如果一个包有下面的配置
{
"name":"foo",
"config":{
"port":"8080"}
}
然后有一个start命令引用了npm_package_config_port环境变量
用户可以通过npm config set foo:port 8089来重写它
19.11 dependencies
依赖是给一组包名指定版本范围的一个hash,这个版本范围是一个或多个空格分隔的字符串组
依赖还可以用tarball或者git URL表示
不要将测试或者过渡性的依赖放在dependencies的hash中
写法和含义
| 参数 | 含义 |
|---|---|
version | 必须完全和version一致 |
>version | 必须比version大 |
>=version | 大于等于version版本 |
<=version | 小于等于version版本 |
<version | 必须比version小 |
~version | 大约一样 |
1.2.x | 1.2.0,1.2.1,...1.2.9等,不包括1.3.0 |
http://... | 见下文"依赖URL" |
* | 所有 |
"" | 空,同*一样 |
version1-version2 | 同>=version1 <=version2 |
range1 | |
git... | 见下文'依赖Git URL' |
user/repo | 见下文'GitHub URLs' |
比如下面都是合法的
{
"dependencies":{
"foo":"1.0.0-2.9999.9999",
"bbb":">=1.0.2<2.1.2",
"bba":">1.0.2<=2.3.4",
"bbc":"2.0.1",
"def":"<1.0.0||>=2.3.1<2.4.5||>=3.0.0",
"asd":"http://asdf.com/asdf.tar.gz",
"adc":"~1.2",
"ldt":"~1.2.3",
"xyz":"2.x",
"rst":"3.3.x"
}
}
19.12 devDependencies
如果有人需要使用你的模块,他们可能不需要你开发使用的外部测试或者文档框架
此时,最好将这些附属的项目列在devDependencies中
这部分内容会在执行npm link或者npm install时初始化,并可以像其他npm配置参数一样管理
对于非特定平台的构建步骤,比如需要编译CoffeeScript,可以用prepublish脚本实现,并把他依赖的包放在devDependencies中
注:
prepublish定义了在执行npm publish的时候先执行的脚本
如
{
"name":"ethopia-waza",
"description":"a delightfully fruity coffee varietal",
"version":"1.2.3",
"devDependencies":{
"coffee-script":"~1.6.3"
},
"scripts":{
"prepublish":"coffee -o lib/ -c src/waza.coffee"
},
"main":"lib/waza.js",
}
prepublish脚本会在publishing前运行,这样用户就不用自己去require来编译就能使用,并且在开发模块中(如本地运行npm install)会运行这个脚本以便更好的测试
感谢阅读,祝君暴富!
原文链接: https://hanshan.blog.csdn.net//article/details/140207792