Vite 和条件死代码消除

Mar*_*ila 7 javascript dead-code code-elimination vite

我使用 Vite 捆绑器,在我的代码中我有以下功能:

function doSomething() {
  if (!import.meta.env.VITE_SOMETHING) {
    return;
  }

  console.log("Hello");
}
Run Code Online (Sandbox Code Playgroud)

我希望在构建我的应用程序(npm run build)而不定义VITE_SOMETHING环境变量后,我将Hello在代码中看到没有日志记录,但我看到了。

更糟糕的是,在我使用的每个地方,import.meta.env.VITE_SOMETHING我都在编译的输出中看到{BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0}.VITE_SOMETHING。它看起来不是很理想。

是否可以共同配置 Vite 来优化输出 - 删除未使用的代码和重复项(它引入的)?

小智 1

在当前的 vite 版本中,它可以按预期工作。这是正确配置的示例 https://stackblitz.com/edit/vitejs-vite-cqttnd?file=tree-shaked/main.ts