Skip to content

Node.js 操作与命令 ​

按任务查找:按锁文件安装、运行项目脚本、查看依赖树、解释间接依赖、依赖审计。命令中的 {{…}} 是要替换的占位符;项目命令在拥有 package.json 的目录执行。

平台、版本与深入课程 ​

n与nvm-sh的示例适用于POSIX/Bash,原生Windows需使用对应工具的Windows说明,不能混用Shell。版本号占位不是推荐安装停止维护的Node。

版本边界:yarn global仅适用于Yarn Classic 1.x,不能套用到现代Yarn;以项目packageManager与锁文件选择版本。本轮教学工程固定npm,不声称已经运行Yarn安装/全局写入。

完整Node流处理与诊断见深入课程,锁文件与构建矩阵见前端工程化。

脚本、依赖与旧别名 ​

npm run · 项目脚本与生命周期 ​

npm run列出当前包脚本,npm run test调用test及相关前后置脚本;npm run-script是npm run的别名。npm test、start、stop、restart属于生命周期入口,不能不看package.json就认为已有可运行服务;尤其restart未定义时可能回退执行stop/start及相关生命周期,不等于单纯查找名为restart的普通脚本。Windows默认脚本Shell与交互PowerShell也不一定相同,跨平台脚本优先调用Node文件。

sh
npm run
npm run test

示例只有当当前package.json定义test时才能运行;本库TypeScript、React和Vue教学工程均提供已验证的test。历史npm-start/stop/restart/test/run-script入口统一到本节。脚本执行项目代码;先读脚本,不把未知仓库安装过程当纯只读操作。npm restart规则。

npm install-test · 安装后测试与重新构建 ​

npm install-test(别名npm it)先安装依赖再测试,可能更新依赖树和锁文件;本课程已有锁文件时选npm ci后npm test分步保留错误证据,不把install-test等同于ci。npm rebuild(旧别名npm rb)重新构建已安装包,可能执行包脚本;只在确认原生依赖或安装脚本问题后使用,不是所有编译错误的修复。install-test。

npm ls · 查看依赖树 ​

sh
npm ls --depth=0

npm list是npm ls的别名;本命令查看当前包的顶层依赖与缺失/无效信息,--all进一步查看传递依赖,--global检查全局安装。依赖存在不等于版本与peer兼容,也不证明应用已通过测试。

npm owner · 包维护者与注册表边界 ​

npm owner ls配合明确包名查询维护者;旧npm author只是owner入口,不能把whoami的当前登录身份当作该包的维护权限。add/rm会变更包维护权限,不在本地语言课程自动执行;需要账号、权限与注册表配套规则。本轮仅核对官方说明,未实际操作包权限。npm owner。

专用工具与其他操作 ​

n · 用于管理多个 node 版本的工具 ​

更多信息:https://github.com/tj/n。

  • 安装给定版本的 node。如果版本已经安装,它将被激活:
bash
n {{版本}}
  • 显示已安装的版本并以交互方式激活其中一个版本:
bash
n
  • 删除一个版本:
bash
n rm {{版本}}
  • 使用给定版本执行文件:
bash
n use {{版本}} {{文件.js}}
  • 输出指定版本的 Node 可执行文件路径:
bash
n bin {{版本}}

node · 服务器后端 JavaScript 平台(Node.js) ​

更多信息:https://nodejs.org/docs/latest/api/cli.html#options。

  • 运行一个 JavaScript 文件:
bash
node {{路径/到/文件}}
  • 开始一个 REPL 交互式解释器:
bash
node
  • 执行指定的文件,当导入的文件发生变化时重启进程(需要 Node.js 18.11+ 版本):
bash
node --watch {{路径/到/文件}}
  • 执行输入的 JavaScript 代码:
bash
node {{[-e|--eval]}} "{{代码}}"
  • 执行输入的 JavaScript 代码并显示结果,用于打印 node 的依赖版本:
bash
node {{[-p|--print]}} "process.versions"
  • 启动检查器并在程序源码解析完成后等待调试器连接:
bash
node --no-lazy --inspect-brk {{路径/到/文件}}

npm · JavaScript 和 Node.js 软件包管理器 ​

管理 Node.js 项目及其模块依赖项。 此命令也有关于其子命令的文件,例如:install, run。 更多信息:https://docs.npmjs.com/cli/npm/。

  • 使用默认值创建一个 package.json 文件(省略 --yes 来以交互方式执行):
bash
npm init {{[-y|--yes]}}
  • 下载 package.json 中列出的所有依赖项软件包:
bash
npm {{[i|install]}}
  • 下载软件包的特定版本并将其添加到 package.json 中的依赖项列表中:
bash
npm {{[i|install]}} {{软件包名}}@{{版本号}}
  • 下载软件包的最新版本并将其添加到 package.json 中的开发依赖项列表中:
bash
npm {{[i|install]}} {{软件包名}} {{[-D|--save-dev]}}
  • 下载软件包的最新版本并全局安装(用 npm config set prefix 设置安装位置):
bash
npm {{[i|install]}} {{软件包名}} {{[-g|--global]}}
  • 卸载软件包并将其从 package.json 中的依赖项列表中删除:
bash
npm {{[r|uninstall]}} {{软件包名}}
  • 列出所有本地安装的依赖项:
bash
npm {{[ls|list]}}
  • 列出所有顶层全局安装的软件包:
bash
npm {{[ls|list]}} {{[-g|--global]}} --depth {{0}}

npm outdated · 检查过时的 npm 软件包依赖 ​

更多信息:https://docs.npmjs.com/cli/npm-outdated/。

  • 查找项目中过时的软件包:
bash
npm outdated
  • 检查当前项目的完整依赖树(包含传递依赖);检查全局安装另用npm outdated --global:
bash
npm outdated {{[-a|--all]}}

npm ping · Ping npm 注册表 ​

Ping npm 注册表。 更多信息:https://docs.npmjs.com/cli/npm-ping/。

  • Ping 默认的 npm 注册表:
bash
npm ping
  • Ping 自定义的 npm 注册表:
bash
npm ping --registry {{custom_registry_url}}

npm prefix · 将本地或全局前缀打印到标准输出 ​

更多信息:https://docs.npmjs.com/cli/npm-prefix/。

  • 打印本地前缀:
bash
npm prefix
  • 打印全局前缀:
bash
npm prefix {{[-g|--global]}}

npm root · 显示 node_modules 目录的路径 ​

显示 node_modules 目录的路径。 更多信息:https://docs.npmjs.com/cli/npm-root/。

  • 显示本地 node_modules 目录的路径:
bash
npm root
  • 显示全局 node_modules 目录的路径:
bash
npm root {{[-g|--global]}}

npm whoami · 显示 npm 用户名 ​

更多信息:https://docs.npmjs.com/cli/whoami/。

  • 显示当前已登录用户的用户名:
bash
npm whoami
  • 显示当前用户在指定注册表中的用户名:
bash
npm whoami --registry {{registry_url}}

npm-audit · 请求已配置的注册表分析依赖漏洞。结果受注册表数据与锁文件影响;audit fix 会修改依赖树,先审查再执行 ​

  • 查看当前项目的漏洞报告:
bash
npm audit
  • 只让高危及以上问题影响退出码,报告仍包含其他级别:
bash
npm audit --audit-level=high
  • 以 JSON 格式保存报告供后续分析:
bash
npm audit --json > {{audit-report.json}}

npm-ci · 按锁文件安装依赖,适合 CI 和可重复安装。要求 package-lock.json 与 package.json 一致;会重新创建 node_modules,不改写锁文件 ​

  • 在项目根目录按锁文件安装:
bash
npm ci
  • CI 中只安装生产依赖:
bash
npm ci --omit=dev
  • 遇到依赖树不一致时,先查看锁文件和项目 npm 配置:
bash
npm config get legacy-peer-deps

npm-explain · 解释某个包为何出现在当前依赖树中,适合追查间接依赖或漏洞来源;需要先安装项目依赖 ​

  • 查看包被哪些依赖引入:
bash
npm explain {{package-name}}
  • 用别名命令查看同一信息:
bash
npm why {{package-name}}
  • 当同名包有多个副本时,按安装路径定位其中一个:
bash
npm explain {{node_modules/path/to/package}}

nvm · 安装、卸载或切换 Node.js 版本 ​

支持如 "12.8" 或 "v16.13.1" 等版本号,以及 "node"、"system" 等标签。 另请参阅:asdf。 更多信息:https://github.com/nvm-sh/nvm#usage。

  • 安装/卸载指定版本的 Node.js:
bash
nvm {{install|uninstall}} {{node_版本}}
  • 在当前 shell 中使用指定版本的 Node.js:
bash
nvm use {{node_版本}}
  • 设置默认的 Node.js 版本:
bash
nvm alias default {{node_版本}}
  • 列出可安装的远程版本,仅显示 LTS(长期支持)版本:
bash
nvm ls-remote --lts
  • 列出已安装的版本:
bash
nvm {{[ls|list]}}
  • 启动指定版本 Node.js 的交互式命令行:
bash
nvm run {{node_版本}}
  • 使用指定版本的 Node.js 执行脚本:
bash
nvm exec {{node_版本}} node {{路径/到/脚本.js}}
  • 在当前 Node.js 版本上升级到最新的可用 npm 版本:
bash
nvm install-latest-npm

pnpm · 快速、节省磁盘空间的 Node.js 包管理器 ​

管理 Node.js 项目和其模块依赖。 更多信息:https://pnpm.io/pnpm-cli。

  • 创建 package.json 文件:
bash
pnpm init
  • 下载 package.json 中列出的所有依赖包:
bash
pnpm {{[i|install]}}
  • 下载指定版本的包并添加至 package.json 的依赖列表:
bash
pnpm add {{模块名}}@{{版本}}
  • 下载包并添加至 package.json 的开发依赖列表:
bash
pnpm add {{模块名}} {{[-D|--save-dev]}}
  • 下载并全局安装包:
bash
pnpm add {{模块名}} {{[-g|--global]}}
  • 卸载包并将其从 package.json 的依赖列表删除:
bash
pnpm {{[rm|remove]}} {{模块名}}
  • 打印本地安装的模块树:
bash
pnpm {{[ls|list]}}
  • 列出顶级全局安装的模块:
bash
pnpm {{[ls|list]}} {{[-g|--global]}} --depth {{0}}

yarn · JavaScript 和 Node.js package manager 的一个替代 ​

更多信息:https://yarnpkg.com/cli。

  • 全局安装一个模块:
bash
yarn global add {{module_name}}
  • 安装 package.json 中指定的依赖(install 命令是可选的 -- 你可以直接输入yarn):
bash
yarn install
  • 安装一个模块并将其写入 package.json 中的依赖项(增加 --dev 来作为开发依赖写入):
bash
yarn add {{module_name}}@{{version}}
  • 卸载一个模块并将其从 package.json 的依赖项中移除:
bash
yarn remove {{module_name}}
  • 交互式地创建一个 package.json 文件:
bash
yarn init
  • 确认一个模块是否是一个依赖项并且列出依赖其的模块:
bash
yarn why {{module_name}}

yarn-why · 确认安装这个 Yarn 软件包的原因 ​

更多信息:https://github.com/amio/yarn-why。

  • 打印安装这个 Yarn 软件包的原因:
bash
yarn-why {{package_name}}

示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。

继续阅读