Node番外篇 - 我不知道的npm

215 阅读4分钟

NPM是随同NodeJS一起安装的包管理工具

npm -v

安装

npm install axios
//指定版本
npm install axios@0.21.1

更新到最新版本

npm install axios@latest -g
//or
npm update axios

查看依赖的基本信息

npm show axios
//or
npm info axios

npm install总结

  1. 发出npm install命令
  2. npm 向 registry 查询模块压缩包的网址
  3. 下载压缩包,存放在~/.npm目录
  4. 解压压缩包到当前项目的node_modules目录

某个依赖需要翻墙时,可以单独设置镜像源安装

npm install xx --registry=http://registry.url

如果使用过程几乎都采用镜像源安装, 可以指定默认源(这里以淘宝镜像为例)

npm config set registry http://registry.npm.taobao.org

还原npm仓库

npm config set registry https://registry.npmjs.org/

查看当前镜像源

npm get registry

发布包流程

//初始化生成package.json
npm init
//注册包仓库账号
npm adduser
//上传包
npm publish
// 发布完测试安装包
npm i test --registry=https://registry.npmjs.org/
//管理包权限
npm owner ls koa    //查看koa 包所有者
//添加包管理员
npm owner add <user> <package name>   //用户名 包名  npm owner add gbk koa
//删除包管理员
npm owner rm <user> <package name>

-save 和 -save-dev

npm install webpack -save-dev
npm install less-loader -save   

这里简单记录下save 与 save-dev:

  • -S 或--save 或者什么都不写, 都会把信息记录到dependencies中;dependencies中记录的都是项目在运行时需要的文件;
    npm i i18n -S 与 npm i i18n 是一样的

  • --save-dev 则会把信息记录到 devDependencies 中;devDependencies 中记录的是项目在开发过程中需要使用的一些文件,在项目最终运行时是不需要的;也就是说我们开发完成后,最终的项目中是不需要这些文件的;

卸载

npm uninstall sass-loader  //这个loader有毒..

注意点: 安装时用了-D 或者 -S等命令, 卸载时需要加上相应的后缀, 如上个例子的i18n, npm uninstall i18n -S

局域npm

企业的限制在于一方面要低耦合,减少手写代码量更快速开发, 另一方面却要考虑到模块保密性问题,所以企业需要搭建自己的npm仓库。 局域npm仓库搭建方法与搭建镜像站的方式几乎一样, 区别在于企业局域npm可以选择不同步官方源仓库中的包。

一个规范的模块应包含以下几个文件 (只是举例,文件名不需要一样)

  • package.json
  • bin: 存放可执行的二进制文件
  • lib: 存放JavaScript代码
  • doc: 存放文档
  • test: 存放单元测试用例

平时用来做测试发布的模块最低限度应包含

  • package.json 文档
  • index.js

nrm

nrm 是npm源管理工具, 用它快速切换npm镜像源

//全局安装
npm install -g nrm  
//查看可用镜像
nrm ls

image.png

如果要用企业自己搭建的仓库, 这里我们需要先添加

//nrm 添加仓库
nrm add test http://xxxx.cn
//添加完查看
nrm ls

重复添加只会生成一个 image.png

这时候我们就可以根据需要切换镜像

//切换淘宝
nrm use taobao
//切换回原生npm
nrm use npm

image.png

删除源

//删除
nrm del test
//查看是否删除成功
nrm ls

下面测试镜像源响应时间

image.png

时间可能跟网络、性能有关,大抵可以看出 taobao镜像源响应最快, 但是cnpm 跟 taobao 是两个镜像源啊!!!

npx

npx 方便在命令行调用项目内部安装的模块(其实我觉得暂时没用到。。)

//安装
npm install -g npx
//能查看版本, 但是这功能好鸡肋。。。
npx vue --version
//原理就是运行的时候,会到`node_modules/.bin`路径
//和环境变量`$PATH`里面,检查命令是否存在。

暂时没用到就不介绍更多了

nvm

它是Node版本管理工具。

在我们的日常开发中经常会遇到这种情况:手上有好几个项目,每个项目的需求不同,进而不同项目必须依赖不同版的 NodeJS 运行环境。如果没有一个合适的工具,这个问题将非常棘手。

nvm 应运而生,nvm 是 Mac 下的 node 管理工具,有点类似管理 Ruby 的 rvm,如果需要管理 Windows 下的 node,官方推荐使用 nvmw 或 nvm-windows。不过,nvm-windows 并不是 nvm 的简单移植,他们也没有任何关系。

由于我是windows电脑, 下面就医windows环境演示

安装

一定要卸载已安装的 NodeJS,否则会发生冲突。然后下载 nvm-windows 最新安装包,直接安装即可。

切换Node版本

//安装Node 版本
nvm install 版本号
//例子如下, 可以根据项目需求安装多个版本
//nvm install 16.10.1  
//nvm install 17.1.0 

image.png

如果你不知道Node目前有哪些版本, 可以查看命令

nvm list available

image.png

//查看已安装版本
nvm list
//切换版本
nvm use 16.10.0 
//查看当前使用的Node版本
node -v

image.png 填坑: use的时候乱码问题

我一开始切换版本的时候发现报错了, 提示 exit status 后面一串乱码 解决方法: 右键以管理员身份执行cmd (并且安装目录不要空格和中文)

image.png

由于之前卸载了Node, 现在重新指定下npm镜像

image.png