如何用vite做多个捆绑?

Moh*_*ADI 9 rollup reactjs webpack esbuild vite

使用vite js捆绑我的库,我需要同时提供两个版本:

  • 生产用途
  • 通过 devtools 集成开发特定代码和警告。

当我使用 webpack 时,我有:

module.exports = [
  defaultUmdBuild("production"),
  defaultUmdBuild("development"),
];
Run Code Online (Sandbox Code Playgroud)

它输出两个文件,然后我的库有这个入口点:

'use strict';

if (process.env.NODE_ENV === 'production') {
  module.exports = require('./mylib.production.js');
} else {
  module.exports = require('./mylib.development.js');
}
Run Code Online (Sandbox Code Playgroud)

如何使用 vite 做同样的事情?

谢谢。

小智 7

我认为你可以使用 vite模式来实现这一点。

使用不同模式运行构建命令:

vite build --mode production #default
vite build --mode development
Run Code Online (Sandbox Code Playgroud)

在 vite.config 文件中,您可以根据模式值拥有不同的构建配置。

// vite.config.js
import { defineConfig } from 'vite';

export default defineConfig(({ mode }) => {
  if (mode === 'production') {
    return {
      // ...
      build: {
        outDir: 'build_production'
      }
    }
  }

  if (mode === 'development') {
    return {
      // ...
      build: {
        outDir: 'build_development'
      }
    }
  }
  return {}
});

Run Code Online (Sandbox Code Playgroud)

  • 我很感谢你的回答,非常感谢。但我需要在一次运行中执行两个构建作业,每个作业具有不同的模式变量值。我可以通过 rollup 和/或 webpack 轻松实现这一点。我想我现在会坚持下去。 (2认同)

Moh*_*ADI 6

对于来这里寻求答案的人来说,

这是我最终所做的(如果发生变化,请编辑)

package.json

"build": "tsc && vite build --config vite.config.lib.dev.ts && vite build --config vite.config.lib.prod.ts"
Run Code Online (Sandbox Code Playgroud)

然后相应地定义两个文件。