node

说用

  • 为什么把node放在前端中,主要是因为:
    • node使用javascript
    • 前端的构建工具都是基于node的

node.js 后端项目的构建工具

  • ESBuild
    • 速度极快(Go 语言编写,比 Webpack/Rollup 快 10-100 倍)。
    • 零配置支持 TypeScript、JSX、ESM/CommonJS。
    • 适合:轻量级打包、开发工具链、替代 tsc。
    • 常用场景:
    # 安装
    npm install esbuild --save-dev
    
    # 编译 TS → JS
    npx esbuild src/app.ts --bundle --platform=node --outfile=dist/app.js
    
  • tsup(基于 ESBuild)
    • 零配置,专为 Node.js 和 TypeScript 优化。
    • 支持 ESM/CommonJS 双格式输出。
    • 常用场景
    # 安装
    npm install tsup --save-dev
    
    # 打包 TS 项目(默认输出 ESM + CommonJS)
    npx tsup src/index.ts
    
  • Rollup
    • Tree Shaking 优化(比 Webpack 更干净)。
    • 适合 库开发(如 Lodash、Vue 等)。
    • 常用场景
    // rollup.config.js
    import { nodeResolve } from '@rollup/plugin-node-resolve';
    
    export default {
    input: 'src/index.js',
    output: { file: 'dist/bundle.js', format: 'cjs' },
    plugins: [nodeResolve()],
    };
    
  • Webpack
    • 功能最全(但配置复杂,适合前端项目)。「前端用vite,webpack有些过时了」
    • 在 Node.js 场景下 稍显臃肿,但支持高级代码拆分。
    • 常用场景
    // webpack.config.js
    module.exports = {
    target: 'node', // 关键:打包为 Node.js 可用代码
    entry: './src/server.js',
    output: { filename: 'dist/server.js' },
    };
    
  • SWC(Rust 编写,类似 Babel)
    • 比 Babel 快 20 倍,支持 TS/JSX。
    • 适合 代码转译(不擅长打包)。
    • 常用场景
    # 编译 TS → JS
    npx swc src --out-dir dist
    
  • 不同场景下的推荐工具
场景推荐工具理由
快速打包 TS 项目tsup / esbuild零配置,速度极快,适合大多数 Node.js 后端项目。
库开发Rollup更好的 Tree Shaking,输出多种模块格式(ESM + CommonJS)。
复杂前端+后端Webpack需要代码拆分、动态加载时使用(但 Node.js 纯后端项目一般不推荐)。
仅转译 TS/JSSWC比 Babel 更快,适合 CI/CD 环境。
  • 为什么 ESBuild/tsup 最常用?**
    1. 速度快:比 Webpack/Rollup 快 10-100 倍,适合现代开发体验。
    2. 零配置:无需复杂配置,开箱即用。
    3. Node.js 优化:默认支持 ESM/CommonJS,排除 node_modules 依赖。
  • 总结
    • 大多数 Node.js 项目:推荐 esbuildtsup(简单、快速)。
    • 库开发:用 Rollup(更好的 Tree Shaking)。
    • 前端+后端混合项目Webpack(但纯后端不推荐)。
    • 仅转译SWC(替代 Babel)。