在从 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
和未使用的代码?
谢谢。
通过
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'),
}),
您需要定义
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),
},
}
})
.