Node.js 命令行工具完整指南
# 🚀 Node.js 命令行工具完整指南
# 📋 目录
# 🚀 基础用法
# 基本语法
node [options] [script.js] [arguments]
1
# 常用命令
# 运行 JavaScript 文件
node app.js
# 运行并传递参数
node app.js arg1 arg2
# 直接执行 JavaScript 代码
node -e "console.log('Hello World')"
# 进入 REPL 交互模式
node
# 检查版本
node --version
node -v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# ⚙️ 常用参数
# -r, --require <module>
在脚本执行前预加载模块。
# 预加载 dotenv 配置
node -r dotenv/config app.js
# 预加载多个模块
node -r dotenv/config -r ./setup.js app.js
# 预加载 TypeScript 编译器
node -r ts-node/register app.ts
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
实际应用:
# 数据库种子脚本
node -r dotenv/config ./scripts/seed.js
# 测试环境设置
node -r ./test-setup.js test.js
# 开发环境配置
node -r dotenv/config -r ./dev-setup.js server.js
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# -e, --eval <script>
直接执行 JavaScript 代码。
# 简单计算
node -e "console.log(2 + 2)"
# 使用模块
node -e "const fs = require('fs'); console.log(fs.readdirSync('.'))"
# 多行代码
node -e "
const os = require('os');
console.log('Platform:', os.platform());
console.log('Architecture:', os.arch());
"
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# -p, --print
与 -e 类似,但会打印执行结果。
# 直接打印结果
node -p "Math.random()"
# 计算并打印
node -p "Date.now()"
# 使用模块
node -p "require('crypto').randomBytes(16).toString('hex')"
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# -i, --interactive
即使 stdin 不是终端也强制进入交互模式。
# 强制交互模式
node -i
# 预加载模块后进入交互模式
node -i -r dotenv/config
1
2
3
4
5
2
3
4
5
# 🔧 环境变量管理
# -r dotenv/config 详解
这是最常用的环境变量加载方式。
工作原理:
node -r dotenv/config app.js
1
-r告诉 Node.js 在执行脚本前加载模块dotenv/config是 dotenv 包的特殊入口,自动加载.env文件- 将
.env文件中的键值对加载到process.env
示例 .env 文件:
# 数据库配置
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_USER=admin
DB_PASS=secretpassword
# API 配置
API_KEY=your-api-key-here
API_URL=https://api.example.com
# 应用配置
NODE_ENV=development
PORT=3000
DEBUG=true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在代码中使用:
// app.js
console.log('Database Host:', process.env.DB_HOST);
console.log('API Key:', process.env.API_KEY);
console.log('Port:', process.env.PORT || 3000);
// 连接数据库
const dbConfig = {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASS
};
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 其他环境变量方式
# 直接设置环境变量
NODE_ENV=production node app.js
# 设置多个环境变量
DB_HOST=localhost PORT=3000 node app.js
# 从文件加载环境变量
node -r dotenv/config app.js
# 指定 .env 文件路径
DOTENV_CONFIG_PATH=./config/.env node -r dotenv/config app.js
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 🐛 调试与性能
# --inspect 和 --inspect-brk
启用调试器。
# 启用调试器
node --inspect app.js
# 启用调试器并立即断点
node --inspect-brk app.js
# 指定调试端口
node --inspect=9229 app.js
# 调试子进程
node --inspect app.js --inspect-child
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Chrome DevTools 调试:
- 运行
node --inspect app.js - 打开 Chrome 浏览器
- 访问
chrome://inspect - 点击 "Open dedicated DevTools for Node"
# --trace-warnings
显示堆栈跟踪警告。
node --trace-warnings app.js
1
# --max-old-space-size
设置 V8 引擎的最大内存使用量。
# 设置最大内存为 4GB
node --max-old-space-size=4096 app.js
# 处理大文件时增加内存
node --max-old-space-size=8192 process-large-file.js
1
2
3
4
5
2
3
4
5
# --expose-gc
暴露垃圾回收器,允许手动触发 GC。
node --expose-gc app.js
1
// 在代码中手动触发垃圾回收
if (global.gc) {
global.gc();
}
1
2
3
4
2
3
4
# 📦 模块加载
# --loader <loader>
指定自定义模块加载器。
# 使用 TypeScript 加载器
node --loader ts-node/esm app.ts
# 使用自定义加载器
node --loader ./my-loader.js app.js
1
2
3
4
5
2
3
4
5
# --experimental-loader
实验性模块加载器(Node.js 12+)。
# 使用实验性加载器
node --experimental-loader ./loader.mjs app.js
1
2
2
# --input-type
指定输入类型。
# 指定为模块
node --input-type=module app.js
# 指定为脚本
node --input-type=script app.js
1
2
3
4
5
2
3
4
5
# 💼 实际应用场景
# 开发环境启动
# 开发服务器
node -r dotenv/config -r ./dev-setup.js server.js
# 热重载开发
nodemon -r dotenv/config server.js
# 测试环境
NODE_ENV=test node -r dotenv/config test.js
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 生产环境部署
# 生产环境
NODE_ENV=production node --max-old-space-size=4096 app.js
# 集群模式
NODE_ENV=production node --max-old-space-size=2048 cluster.js
1
2
3
4
5
2
3
4
5
# 数据库操作
# 数据库迁移
node -r dotenv/config ./scripts/migrate.js
# 数据种子
node -r dotenv/config ./scripts/seed.js
# 数据库备份
node -r dotenv/config ./scripts/backup.js
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 文件处理
# 处理大文件
node --max-old-space-size=8192 process-large-file.js
# 批量文件操作
node -e "
const fs = require('fs');
const files = fs.readdirSync('.');
console.log('Files:', files.length);
"
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 系统监控
# 系统信息
node -p "
const os = require('os');
JSON.stringify({
platform: os.platform(),
arch: os.arch(),
cpus: os.cpus().length,
memory: Math.round(os.totalmem() / 1024 / 1024 / 1024) + 'GB'
}, null, 2)
"
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# ✨ 最佳实践
# 1. 环境变量管理
# 推荐:使用 dotenv
node -r dotenv/config app.js
# 避免:硬编码配置
# node app.js # 配置写在代码里
1
2
3
4
5
2
3
4
5
# 2. 内存管理
# 大文件处理
node --max-old-space-size=4096 process-large-file.js
# 监控内存使用
node --expose-gc --trace-warnings app.js
1
2
3
4
5
2
3
4
5
# 3. 调试技巧
# 开发调试
node --inspect app.js
# 生产问题排查
node --trace-warnings --trace-uncaught app.js
1
2
3
4
5
2
3
4
5
# 4. 性能优化
# 生产环境优化
NODE_ENV=production node --max-old-space-size=2048 app.js
# 启用所有优化
node --optimize-for-size --gc-interval=100 app.js
1
2
3
4
5
2
3
4
5
# 5. 脚本组织
# 项目结构
project/
├── scripts/
│ ├── seed.js
│ ├── migrate.js
│ └── backup.js
├── .env
└── package.json
# 运行脚本
npm run seed # node -r dotenv/config scripts/seed.js
npm run migrate # node -r dotenv/config scripts/migrate.js
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 6. 错误处理
# 启用详细错误信息
node --trace-warnings --trace-uncaught app.js
# 调试模式
DEBUG=* node app.js
1
2
3
4
5
2
3
4
5
# 总结
Node.js 命令行工具提供了丰富的参数和选项,掌握这些工具可以:
- 提高开发效率:快速启动、调试、测试
- 优化性能:内存管理、垃圾回收控制
- 简化部署:环境变量管理、生产优化
- 增强调试:断点调试、错误追踪
合理使用这些参数,可以让 Node.js 应用更加稳定、高效、易于维护。
上次更新: 2025/10/08, 16:24:59