首先,您需要安装一个名为copy-webpack-plugin
的包:
npm install copy-webpack-plugin --save-dev
这个包应该允许您自定义构建过程。
接下来,在您的next.config.js
文件中,您可以添加一个自定义的Webpack配置,将您的环境变量写入一个新的.js
文件,然后在构建过程中将其复制到您的public
文件夹中:
const CopyPlugin = require('copy-webpack-plugin');
const path = require('path');
const fs = require('fs');
module.exports = {
webpack: (config, { dev, isServer }) => {
if (!dev && !isServer) {
const fileContent = `const env = ${JSON.stringify(process.env)};`;
const filePath = path.join(__dirname, 'public', 'env.js');
fs.writeFileSync(filePath, fileContent, 'utf8');
config.plugins.push(
new CopyPlugin({
patterns: [
{ from: 'public', to: '' },
],
})
);
}
return config;
},
};
这里需要注意的一件重要事情是:通过这样做,你将会把所有的环境变量暴露给客户端。如果其中包含任何敏感数据,那么这就有些冒险了。你可能需要调整fileContent
变量,只包括你需要的变量:
const fileContent = `const env = {MY_VAR: "${process.env.MY_VAR}"};`;
这样你只需要在你的public
文件夹中暴露你需要的变量。用你的环境变量的名称替换"MY_VAR"
。
希望这些能有所帮助。