Total Pageviews

Sunday, 14 December 2025

快速上手npm



    npm 是 Node.js 的标准的包管理工具。 Node.js 项目开发往往会使用 npm 来管理依赖,当然你也可以使用其他包管理器,例如 Yarn(https://yarn.bootcss.com/),pnpm(https://www.pnpm.cn/) 等。

准备工作
安装和检查版本

安装 Node.js 时会自动安装 npm。如果你还未安装 Node.js,请先安装 Node.js。
npm 的更新频率往往会比 Node.js 高,你可以通过以下命令来检查 npm 版本:

npm -v
# 我当前的版本是 10.2.5

升级 npm

可以通过下面的命令将 npm 更新到最新版本:

npm install npm@latest -g

初始化项目

一个 package.json 文件会列出项目所依赖的软件包,并且可以通过语义化的规则来控制软件包的版本,这十分有利于项目的合作和共享。一个 package.json 文件必须拥有 "name" 和 "version"。

可以通过下面的命令在当前目录生成 package.json 文件:

npm init

该命令还可以使用 --yes 标志,根据当前目录信息生成默认值。

npm init --yes
# 效果同上
npm init -y

可以在 package.json 文件中指定一些任务,通过以下方式运行:

npm run <任务名称>


本地安装
关于依赖项

依赖项有以下两类:

    dependencies: 项目在生产环境下需要的软件包。
    devDependencies: 仅在开发和测试环境下需要的软件包。

安装本地包

    该操作会将包安装到当前文件夹中的 node_modules 文件中

你可以通过下面的方式将依赖项添加到 package.json 的 dependencies:

npm install <包名> --save
# 效果同上
npm install <包名>
# 安装包的对应版本 x.x.x
npm install <包名@版本号>

同样的,你也可以将依赖项添加到 devDependencies 中:

npm install <包名> --save-dev
# 效果同上
npm install <包名> -D

安装 package.json 文件中的所有依赖,可以通过下面的方式:

# 安装项目中的包
npm install
# 在生产环境下
npm install --production

更新本地包

定期更新依赖可以保证你的项目处于最新状态,当然,有可能会遇到一堆麻烦
你可以在 package.json 文件所在目录执行下面的命令:
npm update

在此之前可以你可以通过下面的方式检查安装的软件包的版本:

npm outdated

在你执行完npm update,该命令应没有任何输出。
卸载本地包

卸载的操作与安装基本类似,只需要将 install 变成 uninstall。
只是从 node_modules 目录中删除包:
npm uninstall <包名>

同时从 package.json 文件中删除依赖:
npm uninstall --save <包名>

作为 devDependency 安装的需要通过 --save-dev 参数才可以卸载:
npm uninstall --save-dev <包名>

删除当前项目文件所有依赖
# 可用性存疑
npm uninstall *

    卸载完成后,你可以查看 node_modules 目录下对于包的目录已经不见了

全局安装
安装全局包

例如对于一个命令行工具,你可能想将其安装到全局,这样你可以在任何目录下使用这个包:

npm install -g <包名>
# 效果同上
npm install --global <包名>

你可以通过下面的命令查看全局安装的路径:

npm root -g

更新和卸载全局包
找出需要更新的软件包:

npm outdated -g --depth=0

更新某个全局软件包:
npm update -g <包名>


更新所有的全局软件包:
npm update -g

卸载某个全局包:
npm uninstall -g <包名>

理解包和模块

Node.js 和 npm 有着对包(packages)和模块的定义(modules),但是很容易混淆它们。看看官网的解释:

    A package is a file or directory that is described by a package.json. A module is any file or directory that can be loaded by Node.js' require().

一个通过 package.json 描述的项目就是包,任何可以被 Node.js 的 require() 加载的就是模块。
因此大部分 npm 软件包都是模块,但这不是必须的。

参考资料:
    Node.js 中文文档(http://nodejs.cn/api/)
    npm 中文文档(https://www.npmjs.cn/)


No comments:

Post a Comment