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文件。
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 · 查看依赖树
npm ls --depth=0npm 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。如果版本已经安装,它将被激活:
n {{版本}}- 显示已安装的版本并以交互方式激活其中一个版本:
n- 删除一个版本:
n rm {{版本}}- 使用给定版本执行文件:
n use {{版本}} {{文件.js}}- 输出指定版本的 Node 可执行文件路径:
n bin {{版本}}node · 服务器后端 JavaScript 平台(Node.js)
- 运行一个 JavaScript 文件:
node {{路径/到/文件}}- 开始一个 REPL 交互式解释器:
node- 执行指定的文件,当导入的文件发生变化时重启进程(需要 Node.js 18.11+ 版本):
node --watch {{路径/到/文件}}- 执行输入的 JavaScript 代码:
node {{[-e|--eval]}} "{{代码}}"- 执行输入的 JavaScript 代码并显示结果,用于打印 node 的依赖版本:
node {{[-p|--print]}} "process.versions"- 启动检查器并在程序源码解析完成后等待调试器连接:
node --no-lazy --inspect-brk {{路径/到/文件}}npm · JavaScript 和 Node.js 软件包管理器
管理 Node.js 项目及其模块依赖项。 此命令也有关于其子命令的文件,例如:
install,run。 更多信息:https://docs.npmjs.com/cli/npm/。
- 使用默认值创建一个
package.json文件(省略--yes来以交互方式执行):
npm init {{[-y|--yes]}}- 下载
package.json中列出的所有依赖项软件包:
npm {{[i|install]}}- 下载软件包的特定版本并将其添加到
package.json中的依赖项列表中:
npm {{[i|install]}} {{软件包名}}@{{版本号}}- 下载软件包的最新版本并将其添加到
package.json中的开发依赖项列表中:
npm {{[i|install]}} {{软件包名}} {{[-D|--save-dev]}}- 下载软件包的最新版本并全局安装(用
npm config set prefix设置安装位置):
npm {{[i|install]}} {{软件包名}} {{[-g|--global]}}- 卸载软件包并将其从
package.json中的依赖项列表中删除:
npm {{[r|uninstall]}} {{软件包名}}- 列出所有本地安装的依赖项:
npm {{[ls|list]}}- 列出所有顶层全局安装的软件包:
npm {{[ls|list]}} {{[-g|--global]}} --depth {{0}}npm outdated · 检查过时的 npm 软件包依赖
- 查找项目中过时的软件包:
npm outdated- 检查当前项目的完整依赖树(包含传递依赖);检查全局安装另用npm outdated --global:
npm outdated {{[-a|--all]}}npm ping · Ping npm 注册表
Ping
npm注册表。 更多信息:https://docs.npmjs.com/cli/npm-ping/。
- Ping 默认的
npm注册表:
npm ping- Ping 自定义的
npm注册表:
npm ping --registry {{custom_registry_url}}npm prefix · 将本地或全局前缀打印到标准输出
- 打印本地前缀:
npm prefix- 打印全局前缀:
npm prefix {{[-g|--global]}}npm root · 显示 node_modules 目录的路径
显示
node_modules目录的路径。 更多信息:https://docs.npmjs.com/cli/npm-root/。
- 显示本地
node_modules目录的路径:
npm root- 显示全局
node_modules目录的路径:
npm root {{[-g|--global]}}npm whoami · 显示 npm 用户名
- 显示当前已登录用户的用户名:
npm whoami- 显示当前用户在指定注册表中的用户名:
npm whoami --registry {{registry_url}}npm-audit · 请求已配置的注册表分析依赖漏洞。结果受注册表数据与锁文件影响;audit fix 会修改依赖树,先审查再执行
- 查看当前项目的漏洞报告:
npm audit- 只让高危及以上问题影响退出码,报告仍包含其他级别:
npm audit --audit-level=high- 以 JSON 格式保存报告供后续分析:
npm audit --json > {{audit-report.json}}npm-ci · 按锁文件安装依赖,适合 CI 和可重复安装。要求 package-lock.json 与 package.json 一致;会重新创建 node_modules,不改写锁文件
- 在项目根目录按锁文件安装:
npm ci- CI 中只安装生产依赖:
npm ci --omit=dev- 遇到依赖树不一致时,先查看锁文件和项目 npm 配置:
npm config get legacy-peer-depsnpm-explain · 解释某个包为何出现在当前依赖树中,适合追查间接依赖或漏洞来源;需要先安装项目依赖
- 查看包被哪些依赖引入:
npm explain {{package-name}}- 用别名命令查看同一信息:
npm why {{package-name}}- 当同名包有多个副本时,按安装路径定位其中一个:
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:
nvm {{install|uninstall}} {{node_版本}}- 在当前 shell 中使用指定版本的 Node.js:
nvm use {{node_版本}}- 设置默认的 Node.js 版本:
nvm alias default {{node_版本}}- 列出可安装的远程版本,仅显示 LTS(长期支持)版本:
nvm ls-remote --lts- 列出已安装的版本:
nvm {{[ls|list]}}- 启动指定版本 Node.js 的交互式命令行:
nvm run {{node_版本}}- 使用指定版本的 Node.js 执行脚本:
nvm exec {{node_版本}} node {{路径/到/脚本.js}}- 在当前 Node.js 版本上升级到最新的可用 npm 版本:
nvm install-latest-npmpnpm · 快速、节省磁盘空间的 Node.js 包管理器
管理 Node.js 项目和其模块依赖。 更多信息:https://pnpm.io/pnpm-cli。
- 创建
package.json文件:
pnpm init- 下载
package.json中列出的所有依赖包:
pnpm {{[i|install]}}- 下载指定版本的包并添加至
package.json的依赖列表:
pnpm add {{模块名}}@{{版本}}- 下载包并添加至
package.json的开发依赖列表:
pnpm add {{模块名}} {{[-D|--save-dev]}}- 下载并全局安装包:
pnpm add {{模块名}} {{[-g|--global]}}- 卸载包并将其从
package.json的依赖列表删除:
pnpm {{[rm|remove]}} {{模块名}}- 打印本地安装的模块树:
pnpm {{[ls|list]}}- 列出顶级全局安装的模块:
pnpm {{[ls|list]}} {{[-g|--global]}} --depth {{0}}yarn · JavaScript 和 Node.js package manager 的一个替代
更多信息:https://yarnpkg.com/cli。
- 全局安装一个模块:
yarn global add {{module_name}}- 安装
package.json中指定的依赖(install命令是可选的 -- 你可以直接输入yarn):
yarn install- 安装一个模块并将其写入
package.json中的依赖项(增加--dev来作为开发依赖写入):
yarn add {{module_name}}@{{version}}- 卸载一个模块并将其从
package.json的依赖项中移除:
yarn remove {{module_name}}- 交互式地创建一个
package.json文件:
yarn init- 确认一个模块是否是一个依赖项并且列出依赖其的模块:
yarn why {{module_name}}yarn-why · 确认安装这个 Yarn 软件包的原因
- 打印安装这个 Yarn 软件包的原因:
yarn-why {{package_name}}示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。
继续阅读
- 运行时与模块
- 开发实践