Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • web
  • web concept
  • javascript

  • css

  • vue

  • react

  • nextjs

  • module

  • web faq
  • web3

  • more

  • 《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#命令行#JavaScript#tool
上次更新: 2025/10/08, 16:24:59
最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式