13-npm 包管理

安装包

npm 的包安装分为本地安装(local)、全局安装(global)两种。

安装指定版本

1
npm install node-sass@4.12.0

本地安装(默认)

1
2
3
npm install <包>   # 本地安装
# 或者
npm i <包>
  • 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  • 可以通过 require() 来引入本地安装的包。

全局安装

1
npm install <包> -g   # 全局安装
  • 将安装包放在 /usr/local 下或者你 node 的安装目录。
  • 可以直接在命令行里使用。这是使用全局安装的主要原因

使用下面的命令来查看全局的包安装的位置:

1
npm prefix -g

创建全局链接

如果你希望具备两者功能(本地安装和全局安装的功能),则需要在两个地方安装它或使用 npm link

npm link的功能是在本地包和全局包之间创建符号链接。我们说过 使用全局模式安装的包不能直接通过 require 使用,但通过 npm link 命令可以打破这一限制。

比如我们将 express安装到了全局环境,使用下面的命令可以将其链接到本地环境:

1
npm link express

使用 npm link命令还可以将本地的包链接到全局。使用方法是在包目录( package.json 所在目录)中运行 npm link 命令。

如果你的项目不再需要该模块,可以在项目目录内使用 npm unlink 命令,删除符号链接。

像 gem 或 pip 总是以全局模式安装,使包可以供所有的程序使用,而 npm 默认会把包安装到当前目录下。这反映了 npm 不同的设计哲学。如果把包安装到全局,可以提高程序的重复利用程度,避免同样的内容的多份副本,但坏处是难以处理不同的版本依赖。

查看安装信息

安装信息和它们的依赖

1
2
3
4
//全局安装信息
npm ls -g

//列出当前项目中的包

更新包

1
2
3
4
5
6
7
8
//更新当前项目中安装的某个包
npm update <包名>

//更新当前项目中安装的所有包
npm update

//更新全局安装的包
npm update <包名> -g

卸载包

1
npm uninstall 包名

搜索包

1
npm search <关键字>

发布包

在发布之前,首先需要让我们的包符合 npm 的规范,npm 有一套以 CommonJS 为基础包规范,但与 CommonJS并不完全一致,其主要差别在于必填字段的不同。通过使用 npm init 可以根据交互问答产生一个符合标准的 package.json。

创建帐号:

1
npm adduser

测试是否取得帐号:

1
npm whoami

发布

1
npm publish

更新包:修改 version字段,再重新发布

取消发布:

1
npm unpublish

版本号

使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。

语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

  • 如果只是修复bug,需要更新Z位。
  • 如果是新增了功能,但是向下兼容,需要更新Y位。
  • 如果有大变动,向下不兼容,需要更新X位。

版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如”argv”: “0.0.x”表示依赖于0.0.x系列的最新版argv。

NPM支持的所有版本号范围指定方式可以查看官方文档。


13-npm 包管理
https://flepeng.github.io/021-frontend-nodejs-13-包管理-01-nodejs-npm-13-npm-包管理/
作者
Lepeng
发布于
2021年8月4日
许可协议