Jacky's blog
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)
  • web
  • 工具

    • Web 开发工具完整指南
    • Node.js 命令行工具完整指南
      • 📋 目录
      • 🚀 基础用法
        • 基本语法
        • 常用命令
      • ⚙️ 常用参数
        • -r, --require <module>
        • -e, --eval <script>
        • -p, --print
        • -i, --interactive
      • 🔧 环境变量管理
        • -r dotenv/config 详解
        • 其他环境变量方式
      • 🐛 调试与性能
        • --inspect 和 --inspect-brk
        • --trace-warnings
        • --max-old-space-size
        • --expose-gc
      • 📦 模块加载
        • --loader <loader>
        • --experimental-loader
        • --input-type
      • 💼 实际应用场景
        • 开发环境启动
        • 生产环境部署
        • 数据库操作
        • 文件处理
        • 系统监控
      • ✨ 最佳实践
        • 1. 环境变量管理
        • 2. 内存管理
        • 3. 调试技巧
        • 4. 性能优化
        • 5. 脚本组织
        • 6. 错误处理
      • 总结
    • npx 使用指南
    • npm 完整使用指南
    • nvm 使用指南
  • JavaScript

  • CSS

  • Vue

  • React

  • Next.js

  • 模块化

  • web faq
  • Web3

  • 更多

  • web concept
  • web
  • tool
Jacky
2024-12-11
目录

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

# ⚙️ 常用参数

# -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

实际应用:

# 数据库种子脚本
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

# -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

# -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

# -i, --interactive

即使 stdin 不是终端也强制进入交互模式。

# 强制交互模式
node -i

# 预加载模块后进入交互模式
node -i -r dotenv/config
1
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

在代码中使用:

// 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

# 其他环境变量方式

# 直接设置环境变量
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

# 🐛 调试与性能

# --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

Chrome DevTools 调试:

  1. 运行 node --inspect app.js
  2. 打开 Chrome 浏览器
  3. 访问 chrome://inspect
  4. 点击 "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

# --expose-gc

暴露垃圾回收器,允许手动触发 GC。

node --expose-gc app.js
1
// 在代码中手动触发垃圾回收
if (global.gc) {
  global.gc();
}
1
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

# --experimental-loader

实验性模块加载器(Node.js 12+)。

# 使用实验性加载器
node --experimental-loader ./loader.mjs app.js
1
2

# --input-type

指定输入类型。

# 指定为模块
node --input-type=module app.js

# 指定为脚本
node --input-type=script app.js
1
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

# 生产环境部署

# 生产环境
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

# 数据库操作

# 数据库迁移
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

# 文件处理

# 处理大文件
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

# 系统监控

# 系统信息
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

# ✨ 最佳实践

# 1. 环境变量管理

# 推荐:使用 dotenv
node -r dotenv/config app.js

# 避免:硬编码配置
# node app.js  # 配置写在代码里
1
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

# 3. 调试技巧

# 开发调试
node --inspect app.js

# 生产问题排查
node --trace-warnings --trace-uncaught app.js
1
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

# 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

# 6. 错误处理

# 启用详细错误信息
node --trace-warnings --trace-uncaught app.js

# 调试模式
DEBUG=* node app.js
1
2
3
4
5

# 总结

Node.js 命令行工具提供了丰富的参数和选项,掌握这些工具可以:

  • 提高开发效率:快速启动、调试、测试
  • 优化性能:内存管理、垃圾回收控制
  • 简化部署:环境变量管理、生产优化
  • 增强调试:断点调试、错误追踪

合理使用这些参数,可以让 Node.js 应用更加稳定、高效、易于维护。

#Node.js#cli#JavaScript#tool#Web
上次更新: 2026/10/18, 22:14:48
Web 开发工具完整指南
npx 使用指南

← Web 开发工具完整指南 npx 使用指南→

最近更新
01
Codex 使用与会话管理指南
10-17
02
Tailscale 入门:让自己的设备跨网络互联
10-15
03
GitHub CLI(gh)工作流与 CI 排查
10-08
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式