npm的全称是(Node Package Manager),是伴随NodeJS一起装置的包治理和散发工具,它很不便让JavaScript开发者下载、装置、上传以及治理曾经装置的包。
先阐明下 上面会用到的几个变量:
- <name>|<pkg> 模块名
- <version> 版本号
- <version range> 版本范畴
- <@scope> 作用域。所有 npm 软件包都有一个名称。某些软件包名称也有作用域。
一、装置配置Node和前言
# 查看 npm 的版本 $ npm -v //6.4.0 << 装置胜利会返回版本号# 查看各个命令的简略用法$ npm -l # 查看 npm 命令列表$ npm help# 查看 npm 的配置$ npm config list -l
二、npm init 创立模块
npm init
用来初始化生成一个新的package.json
文件。它会向用户发问一系列问题,如果感觉不必批改默认配置,一路回车就能够了。
尾缀带-f
(代表force)、-y
(代表yes),则跳过发问阶段,间接生成一个新的package.json
文件,不带尾缀的话,默认有发问阶段。
以上创立好之后就能够在Package.json间接看了 还能够在外面批改更新。
三、npm set 设置环境变量
$ npm set init-author-name 'my name jerry'$ set init-author-email '12345@qq.com'$ set init-author-url 'http://yourdomain.com'$ npm set init-license 'MIT'执行了以上的批改,此时 Package.json并没有发生变化//设置后执行init才是真正批改胜利$ npm init
四、npm search 搜寻模块
npm search
命令用于搜寻npm仓库,它前面能够跟字符串,也能够跟正则表达式。
五、npm list 查看模块
#以后我的项目装置的所有模块$npm list#列出全局装置的模块 带上[--depth 0] 不深刻到包的支点 更简洁$ npm list -g --depth 0
四、npm install 装置模块
根本用法
# 读取package.json外面的配置单装置 $ npm install //可简写成 npm i# 默认装置指定模块的最新(@latest)版本$ npm install [<@scope>/]<name> //eg:npm install gulp# 装置指定模块的指定版本$ npm install [<@scope>/]<name>@<version>//eg: npm install gulp@3.9.1# 装置指定指定版本范畴内的模块$ npm install [<@scope>/]<name>@<version range>//eg: npm install vue@">=1.0.28 < 2.0.0"# 装置指定模块的指定标签 默认值为(@latest)$ npm install [<@scope>/]<name>@<tag>//eg:npm install sax@0.1.1# 通过Github代码库地址装置$ npm install <tarball url>//eg:npm install git://github.com/package/path.git
配置选项阐明:
全局装置 -g | -global //eg: npm i -g gulp 或者 npm i gulp -g #这是默认设置,除非-D或-O存在 #装置并将被增加到package.json的dependencies区。 -P | --save-prod #**(生产阶段的依赖)** #装置并将被增加到package.json的dependencies区 -S | --save //eg: npm i gulp --save 或 npm i gulp -S #**(开发阶段的依赖)** #装置并将被增加到package.json的devDependencies区。 -D | --save-dev //npm i gulp --save-dev 或 npm i gulp -D #**(可选阶段的依赖)** #装置并将被增加到package.json的optionalDependencies区 -O | --save-optional #装置模块的确切版,而不是应用npm的默认semver range运算符 -E | --save-exact //npm i gulp --save-exact 或 npm i gulp -E #装置并将被增加到\`bundleDependencies\`列表中 -B | --save-bundle #模块不论是否装置过,npm 都要强制重新安装 -f|--force //eg:npm install sax --force _//补充:所有模块都要强制重新安装,那就删除\`node\_modules\`,从新执行\`npm install\`_ $ rm -rf node\_modules _//或者手动去删除node\_modules目录_ $ npm install #避免保留到\`dependencies\` --no-save #报告装置情况而不是真的装置 --dry-run
五、npm uninstall 卸载模块
#卸载以后我的项目或全局模块 $ npm uninstall <name> [-g] eg: npm uninstall gulp --save-dev npm i gulp -g卸载后,你能够到 /node\_modules/ 目录下查看包是否还存在,或者应用以下命令查看:npm ls 查看装置的模块
六、npm update 更新模块
#降级以后我的项目或全局的指定模块$ npm update <name> [-g] //eg: npm update express npm update express -g
七、npm link 援用模块
# 援用依赖 有些包是全局装置了,在我的项目外面只须要援用即可。$ npm link [<@scope>/]<pkg>[@<version>]//eg: 援用 npm link gulp gulp-ssh gulp-ftp//eg: 解除援用 npm unlink gulp# 援用模块 自己用得少没深刻说了 用得上时可去翻文档例子$ npm link (in package dir)
八、npm run 执行脚本
package.json
的scripts
字段,能够用于指定脚本命令,供npm
间接调用。npm run
会创立一个Shell,执行指定的命令。
两个命令简写,start
和test
属于非凡命令,能够省略run,其余的都得带上run。
npm run
的参数。
- 如果不加任何参数,间接运行,会列出
package.json
外面所有能够执行的脚本命令
- 可配置参数 格局是加上两个连词线(--)
---package.json文件--- "scripts": { "test": "mocha test/" } -------终端------- $ npm run test _\-- anothertest.js_ _\# 等同于间接执行_ $ mocha test/ anothertest.js
外部变量
---package.json文件---{ "name": "npm_test", "version": "1.0.0", "config": { "reporter": "xunit" }, "script":{ "bundle": "mkdir -p build/$npm_package_version/", //$npm_package_version 读的是外层"version"的值,同理$npm_package_name 读的是外层"name"的值 "test": "mocha test/ --reporter $npm_package_config_reporter" //$npm_package_config_reporter读的是"config"里的"reporter" }}
pre-
和post-
两个钩子(hook)
npm会先查看有没有定义prelint和postlint两个钩子,如果有的话,就会
先执行npm run pre-命令名
,而后执行npm run 命令名
,最初执行npm run post-命令名
。
---package.json文件---"scripts": { "lint": "eslint --cache --ext .js --ext .jsx src", "test": "karma start --log-leve=error karma.config.js --single-run=true", "pretest": "npm run lint", "posttest": "echo 'Finished running tests'" } -------终端-------$ npm run lint//间接执行 npm run lint 完结$ npm run test//因为有定义了两个钩子pretest、posttest。//所以先执行 npm run pretest//而后执行 npm run test//最初执行 npm run posttest
九、npm publish 公布模块
# 未注册 申请注册一个用户 间接在https://www.npmjs.com/注册一样$ npm adduser//执行后 填写几个问题 Username、Password、Email#已注册$ npm login #公布$ npm publish
Mart一下 仅供参考 欢送更正补充 Thanks