如何使用 esbuild 设置全局 属性 以进行反应
How to set global property for react using esbuild
根据文档,使用 define
是为构建设置 env 属性的建议方法。
当我 运行 我的应用出现进程未定义错误时。
我的esconfig如下:
await build({
entryPoints: ['./src/index.tsx'],
outdir: './build',
bundle: true,
incremental: true,
metafile: true,
target: 'es6',
loader: { '.png': 'file' },
minify: !dev,
sourcemap: 'inline',
define: { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development') },
plugins: [
sassPlugin(),
svg(),
copy({
resolveFrom: 'cwd',
assets: {
from: ['./public/*'],
to: ['./build2/*'],
},
}),
copy({
resolveFrom: 'cwd',
assets: {
from: ['./public/images/*'],
to: ['./build2/images/*'],
},
}),
],
watch: dev
? {
onRebuild: (error) => {
if (error) {
console.error(error);
} else {
console.log('rebuild done');
}
},
}
: false,
});
我也对设置全局属性以控制配置的其他方式持开放态度。
我已经在构建开始前写了一个 config/env 文件。
然后我的 React 应用程序只需要知道 env 文件的位置。
const config: IEnv = {
ENV: process.env.NODE_ENV ? process.env.NODE_ENV : 'development',
USE_EMU: process.env.USE_EMU === '1' ? true : false,
USE_DEV: process.env.USE_DEV === '1' ? true : false,
VERSION: process.env.VERSION ? process.env.VERSION : 'dev',
};
fs.writeFileSync('src/env.json', JSON.stringify(config), { encoding: 'utf8' });
您收到 process is not defined
错误,因为您实际上没有在 define
选项中定义 process
,您定义了 process.env.NODE_ENV
.
这可能违反直觉,但 define
选项就是这样使用的。它实际上并没有定义变量,只是用相应的值替换了所有看起来像 define
键的标记。
根据文档,使用 define
是为构建设置 env 属性的建议方法。
当我 运行 我的应用出现进程未定义错误时。
我的esconfig如下:
await build({
entryPoints: ['./src/index.tsx'],
outdir: './build',
bundle: true,
incremental: true,
metafile: true,
target: 'es6',
loader: { '.png': 'file' },
minify: !dev,
sourcemap: 'inline',
define: { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development') },
plugins: [
sassPlugin(),
svg(),
copy({
resolveFrom: 'cwd',
assets: {
from: ['./public/*'],
to: ['./build2/*'],
},
}),
copy({
resolveFrom: 'cwd',
assets: {
from: ['./public/images/*'],
to: ['./build2/images/*'],
},
}),
],
watch: dev
? {
onRebuild: (error) => {
if (error) {
console.error(error);
} else {
console.log('rebuild done');
}
},
}
: false,
});
我也对设置全局属性以控制配置的其他方式持开放态度。
我已经在构建开始前写了一个 config/env 文件。
然后我的 React 应用程序只需要知道 env 文件的位置。
const config: IEnv = {
ENV: process.env.NODE_ENV ? process.env.NODE_ENV : 'development',
USE_EMU: process.env.USE_EMU === '1' ? true : false,
USE_DEV: process.env.USE_DEV === '1' ? true : false,
VERSION: process.env.VERSION ? process.env.VERSION : 'dev',
};
fs.writeFileSync('src/env.json', JSON.stringify(config), { encoding: 'utf8' });
您收到 process is not defined
错误,因为您实际上没有在 define
选项中定义 process
,您定义了 process.env.NODE_ENV
.
这可能违反直觉,但 define
选项就是这样使用的。它实际上并没有定义变量,只是用相应的值替换了所有看起来像 define
键的标记。