npm
1. npm init
npm init -y快速生成基础package.json
// package.json
{
"name": "demo", // 发包时需要的包名 214字以内 无大写字母 非._开头 的url安全字符
"version": "1.0.0",// 包版本
"description": "",
"main": "index.js",
"files":[],
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
package.json
{
"name": "demo", // 发包时需要的包名 214字以内 无大写字母 非._开头 的url安全字符
"version": "1.0.0", // 包版本
// npm 搜索使用
"description": "demo",
"keywords": [
"demo"
],
"main": "index.js", //入口文件。如果这个字段没有设置的话,入口文件就默认为根目录下的index.js文件
"browser": "index.js", //入口文件 browser端使用
"files": [], // 见下方注释1
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"bin": {
"test": "./dist/index.js" // 或者直接string则为包名 见注释2
},
"config": { // 配置npm config 运行时会执行npm config set foo:port 8080覆盖process.env.npm_package_config_port环境变量
"port": 8080
},
"dependencies": { // 依赖见3
},
"devDependencies": { // 开发依赖项步打包进程序中
},
"peerDependencies": { //依赖的模块 npm 3.0 版开始,peerDependencies 不再会默认安装了
},
"optionalDependencies": { // 找不到包或者安装包失败时,npm 在该字段中查找
},
"bundledDependencies": [ // 包发布时一起打包字段数组中的值必须是在 dependencies, devDependencies 里声明的包
"demo"
],
"engines": { // 说明对 npm 包的版本或者 Node 版本有特殊要求
"node": ">=0.10.3 <0.12"
},
"directories": { // 目录位置,目前无作用
"bin": "./bin",
"lib": "./lib",
"doc": "./doc",
"test": "./test",
//...
},
"homepage": "https://github.com/owner/project#readme", // 项目地址
"man": [
"./man/doc.1"
], // manuel手册 帮助文档 参考linux中man命令
"bugs": { //上报bug地址或者 或者使用string 地址
"url": "https://github.com/owner/project/issues",
"email": "project@hostname.com"
},
"repository": { // 包的仓库地址
"type": "git",
"url": "https://github.com/npm/cli.git"
},
"private":false, //设置true是不发布包
"publishConfig":{ // 发布配置时的npm配置
},
"author": "",
"license": "ISC"
}
注释
-
files
npm publish发布时的上传文件 默认["*"]全部文件 使用.npmignore文件忽略上传 语法参考.gitignore 。如果不存在该文件将使用.gitignore中的配置 其中部分文件无论怎么配置如.gitpackage-lock.json(可以使用npm-shrinkwrap.json代替)都将忽略或如package.jsonmain字段中的文件等包含 参考npm文档 -
bin 可执行文件字段。存在改字段就会在
node_modules文件夹下面的.bin目录中复制了 bin 字段链接的执行文件。我们在调用执行文件时,可以不带路径,直接使用命令名来执行相对应的执行文件。全局安装该包时则在npm的.bin文件夹中,能在npm环境之外全局调用 -
依赖项 版本号或者url
- 版本号 详情
- 固定版本
1.0.0 - 范围
>=1.0.2 <2.1.21.0.0 - 2.0.01与2之间 ` - 逻辑操作
1.1.1 || >1.2.11.1.1或者大于1.2.1 - 地址
http://asdf.com/asdf.tar.gz - 最新
latest - X-Ranges
1.2.x表示1.2开头的任意一个包*任意版本 - 指定范围
^1.1.11.x.x版本~1.1.11.1.x版本~11.x.x版本 - 带预发步标签 >1.1.1.alpha.1` 1.1.1.alpha.x x大于1版本
- 固定版本
- url格式
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]。<protocol> git, git+ssh, git+http, git+https, or git+file-
git URL:
git+https://isaacs@github.com/npm/cli.gitgit://github.com/npm/cli.git#v1.0.27
-
file:
file:../foo/bar
-
gitHub URLs:
mochajs/mocha#4727d357ea
-
- peerDependencies 当npm i时候将不会安装进node_modules 当PackageBdependencies了PackageA时候
如当前demo包dependencies了PackageA包会产生如下结构
|- PackageB |- node_modules |- Demo |- PackageA |- PackageA如当前demo包peerDependencies了PackageA包 在B包中安装demo包时将不会安装在demo包下需要手动安装a包产生如下结构
|- PackageB |- node_modules |- Demo |- PackageA - 版本号 详情
2. npm install <package>
npm install会先检查,node_modules目录之中是否已经存在指定模块。如果存在,就不再重新安装
可以使用npm install <package> -f或--force强制重新安装
其他命令
-g全局安装-S安装写入dependencies-D安装写入devDependencies
3. npm update <package>
如果有最新版本会更新本地包
4. npm uninstall <package>
删除本地包
5. npm link <package>
链接到对应的全局包 使单个模块中依赖的包使用全局安装的包 可以使用在经常重复使用的包中也可以 链接自己的本地包
- 在需要共享的包package.json同级目录
npm link根据package.json中name生成对应包 - 需要使用的地方
npm link <name>
6. npm run <command>
npm run会添加了node_modules/.bin环境路径 并且优先级最高。
npm run 自带钩子以npm run start为例
npm run prestart在start前运行npm run poststart在start之后运行
7. 其他常用命令
v <package>查看包版本信息v <package> versions查看包所有版本ls查看安装的版本docs <package>查看包文档