npm使用方法及常用命令
- 工程目录
- npm ([NPM中文文档](https://www.npmjs.cn/))
- 下载第三方包
- 安装命令行程序
- 发布代码
- npm 常用命令
- npm 使用淘宝镜像
工程目录 以编写一个命令行程序为例,一般我们会同时提供命令行模式和 API 模式两种使用方式,并且我们会借助第第三方包来编写代码。除了代码外,一个完整的程序也应该有自己的文档和测试用例。因此,一个标准的工程目录都看起来像下边这样。
- /home/user/workspace/node-echo/# 工程目录- bin/# 存放命令行相关代码node-echo+ doc/# 存放文档- lib/# 存放API相关代码echo.js- node_modules/# 存放第三方包+ argv/+ tests/# 存放测试用例package.json# 元数据文件README.md# 说明文件
其中部分文件内容如下:
/* bin/node-echo */var argv = require('argv'),echo = require('../lib/echo');
console.log(echo(argv.join(' ')));
/* lib/echo.js */module.exports = function (message) {return message;
};
/* package.json */{"name": "node-echo","main": "./lib/echo.js"}
【Node|npm使用方法及常用命令】以上例子中分类存放了不同类型的文件,并通过 node_moudles 目录直接使用第三方包名加载模块。此外,定义了package.json 之后,node-echo 目录也可被当作一个包来使用。
npm (NPM中文文档) NPM 是随同 Node 一起安装的包管理工具,能解决 node.js 代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从 NPM 服务器下载别人编写的第三方包到本地使用。
- 允许用户从 NPM 服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到 NPM 服务器供别人使用。
可以看到,NPM 建立了一个 NodeJS 生态圈,NodeJS 开发者和用户可以在里边互通有无。以下分别介绍这三种场景下怎样使用 NPM。
需要使用第三方包时,首先得知道有哪些包可用。虽然 npmjs.org 提供了个搜索框可以根据包名来搜索,但如果连想使用的第三方包的名字都不确定的话,就请百度一下吧。知道了包名后,比如上边例子中的 argv,就可以在工程目录下打开终端,使用
npm install argv
命令来下载argv。版本号:argv@0.0.2
存放目录:node_modules\argv
下载好之后,argv 包就放在了工程目录下的 node_modules 目录中,因此在代码中只需要通过 require(‘argv’)的方式就好,无需指定第三方包路径。
以上命令默认下载最新版第三方包,如果想要下载指定版本的话,可以在包名后边加上@,例如通过
npm install argv@0.0.1
命令可下载 0.0.1 版的 argv。版本号:argv@0.0.1
存放目录:node_modules\argv
如果使用到的第三方包比较多,在工程目录下一个包一条命令地安装未免太过繁琐。因此 NPM 对 package.json 的字段做了扩展,允许在其中申明第三方包依赖。因此,上边例子中的 package.json 可以改写如下:
{"name": "node-echo","main": "./lib/echo.js","dependencies": {"argv": "0.0.2"}}
这样处理后,在工程目录下就可以使用
npm install
命令批量安装第三方包了。更重要的是,当以后 node-echo 也上传到了 NPM 服务器,别人下载这个包时,NPM 会根据包中申明的第三方包依赖自动下载进一步依赖的第三方包。例如,使用 npm install node-echo
命令时,NPM 会自动创建以下目录结构。- project/- node_modules/- node-echo/- node_modules/+ argv/......
如此一来,用户只需关心自己直接使用的第三方包,不需要自己去解决所有包的依赖关系。
安装命令行程序
从 NPM 服务上下载安装一个命令行程序的方法与第三方包类似。例如上例中的 node-echo 提供了命令行使用方式,只要 node-echo 自己配置好了相关的 package.json 字段,对于用户而言,只需要使用
npm install node-echo -g
命令安装程序。参数中的 -g 表示全局安装,一般命令行程序都使用全局安装如果使用全局安装, node-echo 会默认安装到以下位置,并且 NPM 会自动创建好 Linux 系统下需要的软链文件或 Windows 系统下需要的.cmd文件。
- /usr/local/# Linux系统下- lib/node_modules/+ node-echo/...- bin/node-echo......
- %APPDATA%\npm\# Windows系统下- node_modules\+ node-echo\...node-echo.cmd...
发布代码
第一次使用 NPM 发布代码前需要注册一个账号。终端下运行 npm adduser,之后按照提示做即可。账号搞定后,接着我们需要编辑 package.json 文件,加入 NPM 必需的字段。接着上边 node-echo 的例子,package.json 里必要的字段如下。
{"name": "node-echo",# 包名,在NPM服务器上须要保持唯一"version": "1.0.0",# 当前版本号"dependencies": {# 第三方包依赖,需要指定包名和版本号"argv": "0.0.2"},"main": "./lib/echo.js",# 入口模块位置"bin" : {"node-echo": "./bin/node-echo"# 命令行程序名和主模块位置}}
之后,我们就可以在 package.json 所在目录下运行 npm publish 发布代码了。
npm 常用命令
除了本章介绍的部分外,NPM 还提供了很多功能,package.json 里也有很多其它有用的字段。除了可以在 npmjs.org/doc/ 查看官方文档外,这里再介绍一些 NPM 常用命令。
npm -v
: 查看npm版本npm init [-y]
: 初始化后会出现一个package.json配置文件。可以在后面加上-y ,快速跳过问答式界面。npm install
:会根据项目中的package.json文件自动下载项目所需的全部依赖。npm install 包名 --save-dev (npm install 包名 -D)
:安装的包只用于开发环境,不用于生产环境,会出现在package.json文件中的devDependencies属性中。npm install 包名 --save(npm install 包名 -S)
:安装的包需要发布到生产环境的,会出现在package.json文件中的dependencies属性中。npm list
:查看当前目录下已安装的node包。npm list -g
:查看全局已经安装过的node包。npm help [命令]
:查看npm所有命令,也可以查看指定命令用法。npm update [包名]
:可以把当前目录下 node_modules 子目录里边的对应模块更新至最新版本,加上包名表示只更新这个包。npm update [包名] -g
:可以把所有全局安装的对应命令行程序更新至最新版,加上包名表示只更新这个包。npm uninstall 包名
:卸载指定包。npm config list
:查看配置信息。npm 指定命令 --help
:查看指定命令的帮助。npm info 指定包名
:查看远程npm上指定包的所有版本信息。npm config set registry https://registry.npm.taobao.org
: 修改包下载源,此例修改为了淘宝镜像。npm install -g nrm
: 可以通过nrm管理镜像地址nrm ls
: 查看nrm有哪些可用镜像nrm use taobo
: 切换到淘宝镜像
npm root
:查看当前包的安装路径。npm root -g
:查看全局的包的安装路径。npm ls [包名]
:查看本地安装的指定包及版本信息,没有显示empty。npm ls [包名] -g
:查看全局安装的指定包及版本信息,没有显示empty。npm cache clear
:npm install . -g
:在 package.json 所在目录下使用,可先在本地安装当前命令行程序,可用于发布前的本地测试。npm cache clear
:清空 NPM 本地缓存,用于对付使用相同版本号发布新版本代码的人。npm unpublish @
:撤销发布自己发布过的某个版本代码。
国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝NPM镜像(淘宝npm地址)。
- 临时使用
npm --registry https://registry.npm.taobao.org install express
- 持久使用
npm config set registry https://registry.npm.taobao.org
- 配置后可通过下面方式来验证是否成功
npm config get registry 或 npm info express
- 通过cnpm使用
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 使用方法:
cnpm install express
- 使用方法:
- 使用 nrm 管理 registry 地址
- 下载 nrm 命令行工具
npm install -g nrm
- 使用方法:
nrm ls
:查看 nrm 有哪些可用镜像(星号表示当前使用的镜像)
* npm -------- https://registry.npmjs.org/ yarn ------- https://registry.yarnpkg.com/ cnpm ------- http://r.cnpmjs.org/ taobao ----- https://registry.npm.taobao.org/ nj --------- https://registry.nodejitsu.com/ npmMirror -- https://skimdb.npmjs.com/registry/ edunpm ----- http://registry.enpmjs.org/
nrm use taobo
:切换到淘宝镜像
Registry has been set to: https://registry.npm.taobao.org/
nrm test taobao
:测试镜像速度
* taobao - 247ms
- 下载 nrm 命令行工具
推荐阅读
- vue.js|vue中使用axios封装成request使用
- vue|电商后台管理系统(vue+python|node.js)
- transformer|Swin-Transformer代码讲解-Video Swin-Transformer
- 设置npm源为淘宝镜像
- node 与 ts-node
- git使用技巧备忘(持续更新。。。)
- 后端工作笔记
- 关于项目中 Repository 层的思考
- git 高级操作
- 同步GIT仓库的操作 -- pull命令