npm
1. 基本命令
1.0 换源
-
set registry
npm config set registry https://registry.npm.taobao.org` // 配置后可通过下面方式来验证是否成功 npm config get registry` // 或npm info express
-
yrm: 是一个
yarn
源管理器,允许你快速地在源间切换npm install yrm -g yrm use taobao yrm ls yarn config get registry
1.1 查找包 npm view
查看软件包在 npm 仓库上最新的可用版本
npm view [package_name] version
列出软件包所有的以前的版本
npm view <package> versions
1.2 安装包 npm install
1.2.1 安装单个包
npm install <package-name>
#安装特定的软件包
#npm install <package>@<version>
npm install cowsay@1.2.0
通常会在此命令中看到更多标志:
--save
安装并添加条目到package.json
文件的 dependencies。--save-dev
安装并添加条目到package.json
文件的 devDependencies。
devDependencies
开发依赖是仅用于开发的程序包,在生产环境中并不需要。 例如测试的软件包、webpack 或 Babel。
dependencies
则是与生产环境中的应用程序相关。通过npm install --production
),避免安装这些开发依赖项。
1.2.2 安装所有依赖
项目具有 package.json
文件
npm install
1.2.3 本地安装与全局安装
- 本地的软件包 安装在运行
npm install <package-name>
的目录中,并且放置在此目录下的node_modules
文件夹中 - 全局的软件包 -g, 全局位置查看:
npm root -g
# 本地安装
npm install <package-name>
# 全局安装
npm install -g <package-name>
1.3 更新包 npm update
## 更新所有包
npm update
## 指定单个软件包进行更新:
npm update <package-name>
1.4 卸载包 npm uninstall
npm uninstall <package-name>
npm uninstall -S <package-name> ## -S 或 --save 标志,则此操作还会移除 package.json 文件中的引用
npm uninstall -D <package-name> ## 使用 -D 或 --save-dev 标志从文件中移除
npm uninstall -g <package-name> ## -g 或 --global 标志 全局卸载
1.5 安装包列表 npm list
npm list
npm list -g
# 顶层的软件包
npm list --depth=0
# 指定名称来获取特定软件包的版本
npm list cowsay
2. 说明文件
2.1 语义版本
语义版本控制的概念很简单:所有的版本都有 3 个数字:x.y.z
。
- 第一个数字是主版本。
- 第二个数字是次版本。
- 第三个数字是补丁版本。
当发布新的版本时,不仅仅是随心所欲地增加数字,还要遵循以下规则:
- 当进行不兼容的 API 更改时,则升级主版本。
- 当以向后兼容的方式添加功能时,则升级次版本。
- 当进行向后兼容的缺陷修复时,则升级补丁版本。
因为 npm 设置了一些规则,可用于在 package.json 文件中选择要将软件包更新到的版本(当运行 npm update 时)。规则使用了这些符号:
符号 | 规则 |
---|---|
^ | 只会执行不更改最左边非零数字的更新。 如果写入的是 ^0.13.0,则当运行 npm update 时,可以更新到 0.13.1、0.13.2 等,但不能更新到 0.14.0 或更高版本。 如果写入的是 ^1.13.0,则当运行 npm update 时,可以更新到 1.13.1、1.14.0 等,但不能更新到 2.0.0 或更高版本。 |
~ | 如果写入的是 〜0.13.0,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 可以,但 0.14.0 不可以。 |
> | 接受高于指定版本的任何版本。 |
>= | 接受等于或高于指定版本的任何版本。 |
<= | 接受等于或低于指定版本的任何版本。 |
< | 接受低于指定版本的任何版本。 |
= | 接受确切的版本。 |
- | 接受一定范围的版本。例如:2.1.0 - 2.6.2。 |
|| | 组合集合。例如 < 2.1 || > 2.6。 |
无符号 | 仅接受指定的特定版本(例如 1.2.1)。 |
latest | 使用可用的最新版本。 |
2.1 package.json
- npm init命令会帮助你生成package.json文件
- package.json 文件是项目的清单。 它可以做很多完全互不相关的事情。
2.1.1 package.json
Package.json:自己创建,创建空白文件({}), npm install package之后会自动在文件中增加新的东西。
属性 | 说明 |
---|---|
version | 表明了当前的版本。 |
name | 设置了应用程序/软件包的名称。 |
description | 是应用程序/软件包的简短描述。 |
main | 设置了应用程序的入口点。 |
private | 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm。 |
scripts | 定义了一组可以运行的 node 脚本。 |
dependencies | 设置了作为依赖安装的 npm 软件包的列表。 |
devDependencies | 设置了作为开发依赖安装的 npm 软件包的列表。 |
engines | 设置了此软件包/应用程序在哪个版本的 Node.js 上运行。 |
browserslist | 用于告知要支持哪些浏览器(及其版本)。 |
{
"name": "test-project",
"version": "1.0.0",
"description": "A Vue.js project",
"main": "src/main.js",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"test": "npm run unit",
"lint": "eslint --ext .js,.vue src test/unit",
"build": "node build/build.js"
},
"dependencies": {
"vue": "^2.5.2"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-eslint": "^8.2.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-jest": "^21.0.2",
"babel-loader": "^7.1.1",
"babel-plugin-dynamic-import-node": "^1.2.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"eslint": "^4.15.0",
"eslint-config-airbnb-base": "^11.3.0",
"eslint-friendly-formatter": "^3.0.0",
"eslint-import-resolver-webpack": "^0.8.3",
"eslint-loader": "^1.7.1",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-vue": "^4.0.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"jest": "^22.0.4",
"jest-serializer-vue": "^0.3.0",
"node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-jest": "^1.0.2",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": ["> 1%", "last 2 versions", "not ie <= 8"]
}
2.1.2 运行文件 npm run <task-name>
package.json
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js",
},
}
bash
npm run watch
npm run dev
npm run prod
2.2 package-lock.json
package-lock.json : 安装包后,自动生成。
作用: 会固化当前安装的每个软件包的版本,当运行 npm install时,npm 会使用这些确切的版本。
3. npx
-
轻松地运行本地命令
-
无需安装的命令执行
-
npx cowsay "你好"
-
-
使用不同的 Node.js 版本运行代码
-
npx node@10 -v #v10.18.1 npx node@12 -v #v12.14.1
-
-
直接从 URL 运行任意代码片段
-
npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
-