如何从 vite 的生产包中删除 process.env.NODE_ENV 并删除未使用的代码

问题描述 投票:0回答:2

在从 webpack 迁移到 vite 的过程中,我们使用

process.env.NODE_ENV
添加特定代码。

现在使用 vite,捆绑包中包含了所有应该处于开发模式的东西,包括

process.env.NODE_ENV
.

这是

vite.config.js

import path from 'path'
import { defineConfig } from 'vite'

/**
 * @type {import('vite').UserConfig}
 */
export default defineConfig(({mode}) => {
  console.log('vite configuration for mode', mode);
  return {
    define: {
      NODE_ENV: "production",
    },
    build: {
      mode: "development",
      lib: {
        name: 'MyLib',
        fileName: 'mylib.production',
        entry: path.join(process.cwd(), "src/index.ts"),
      },
      rollupOptions: {
        external: 'react',
        output: [
          {
            format: 'umd',
            globals: { react: 'react' },
            entryFileNames: `mylib.production.js`,
          },
        ]
      }
    }
  }
})

tsconfig.json

{
  "compilerOptions": {
    "sourceMap": true,
    "strictNullChecks": true,
    "module": "esnext",
    "jsx": "react-jsx",
    "target": "es5",
    "allowJs": true,
    "moduleResolution": "Node",
    "noImplicitAny": false,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "declaration": true,
    "declarationDir": "dist",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "strict": false,
    "noEmit": false
  },
  "include": [
    "src"
  ]
}

如何从捆绑包中删除

process.env.NODE_ENV
和未使用的代码?

谢谢。

reactjs webpack vite rollup esbuild
2个回答
0
投票

通过

replace
插件修复:

const replace = require('@rollup/plugin-replace');
// or import replace form '@rollup/plugin-replace';

// in plugins section:
replace({
  preventAssignment: true,
  'process.env.NODE_ENV': JSON.stringify('production'),
}),

0
投票

您需要定义

process.env.NODE_ENV
如下:

https://vitejs.dev/guide/build.html

环境变量

....如果这是不可取的,你可以使用定义:{ 'process.env.NODE_ENV': '"production"' } 例如静态 替换它们。

,又如:

export default defineConfig(({ mode }) => {
  return {
    define: {
      'process.env.NODE_ENV': JSON.stringify(mode),
    },
  }
})

.

© www.soinside.com 2019 - 2024. All rights reserved.