先分清 node 与 npm
Node.js 生态里最容易混淆的是 node 和 npm 两个命令。node 是运行时,负责执行 JavaScript 文件;npm 是包管理器,负责安装依赖、运行脚本。初学时把两者混用,往往会出现“命令找不到”或“模块未安装”的报错。
node app.js # 运行单个文件
node # 进入 REPL 交互环境
REPL 适合快速验证语法片段,按两次 Ctrl+C 退出。
执行脚本与传参
node 执行脚本时,命令行参数通过 process.argv 读取。索引 0 是 node 路径,索引 1 是脚本路径,真正的业务参数从索引 2 开始。调试参数解析问题时,先 console.log(process.argv) 打印一次最直接。
模块相关命令
node –check app.js # 只做语法检查,不执行
node –input-type=module -e “import os from ‘os’; console.log(os.platform())”
需要以 ES Module 方式运行时,可用 --input-type=module 配合 -e 执行内联代码,省去建临时文件。
npm 高频命令
日常使用频率最高的是安装与脚本执行:
npm install # 安装 package.json 中的依赖
npm install axios # 安装并写入 dependencies
npm install -D vitest # 安装为开发依赖
npm run dev # 执行 scripts 中的 dev
npm ci # 按 lock 文件精确安装,适合 CI
npm ci 会先删除 node_modules,安装结果可复现,比 npm install 更适合流水线环境。
排查依赖问题
npm ls axios # 查看依赖树中 axios 的版本
npm outdated # 列出可升级的包
npm explain # 解释某包为何被安装
遇到“版本冲突”或“幽灵依赖”,npm ls 和 npm explain 比反复删 node_modules 更有效。
npx 与一次性命令
npx 用于执行包内提供的命令行工具,无需全局安装:
npx create-vite my-app
npx eslint src
它优先使用本地 node_modules/.bin 中的版本,避免全局版本与项目版本不一致。
调试与监控
node –inspect app.js # 开启调试器,配合 Chrome DevTools
node –watch app.js # 文件变动自动重启
node –env-file=.env app.js # 从文件加载环境变量
--watch 适合本地开发的小型服务,省去 nodemon 一类工具;--env-file 让环境变量管理更清晰,但要注意该文件不应提交到仓库。
版本管理
node -v
npm -v
nvm use 20 # 若使用 nvm 管理多版本
团队协作时,建议在 package.json 的 engines 字段声明 Node 版本范围,并在 README 中写明,减少“我本地能跑”的问题。
掌握这些命令后,日常开发中大部分场景都可以在终端完成,不必频繁切换工具。