This commit is contained in:
aaron 2025-03-09 10:54:35 +08:00
parent 6ad0742e9c
commit 37c01d7bac
5 changed files with 73 additions and 3 deletions

View File

@ -8,6 +8,9 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
# 输出构建环境信息
RUN echo "Building for environment: ${NODE_ENV}"
# 安装 yarn
RUN apk add --no-cache yarn
@ -27,12 +30,26 @@ RUN yarn install --frozen-lockfile
# 复制项目文件
COPY . .
# 创建或更新环境文件
RUN echo "NODE_ENV=${NODE_ENV}" > .env && \
if [ "$NODE_ENV" = "production" ]; then \
echo "VUE_APP_API_URL=https://api.beefast.co" >> .env; \
elif [ "$NODE_ENV" = "testing" ]; then \
echo "VUE_APP_API_URL=https://api-dev.beefast.co" >> .env; \
else \
echo "VUE_APP_API_URL=http://localhost:8000" >> .env; \
fi && \
cat .env
# 根据环境变量选择构建命令
RUN if [ "$NODE_ENV" = "production" ]; then \
echo "Running production build" && \
yarn build:prod; \
elif [ "$NODE_ENV" = "testing" ]; then \
echo "Running testing build" && \
yarn build:test; \
else \
echo "Running development build" && \
yarn build:dev; \
fi

View File

@ -4,6 +4,11 @@ import App from './App.vue';
import router from './router';
import store from './store';
import 'ant-design-vue/dist/antd.css';
import debug from './utils/debug';
// 输出环境信息
console.log('当前运行环境:', process.env.NODE_ENV);
console.log('API基础URL:', process.env.VUE_APP_API_URL);
const app = createApp(App);
@ -11,4 +16,7 @@ app.use(Antd);
app.use(router);
app.use(store);
// 挂载调试工具到全局
app.config.globalProperties.$debug = debug;
app.mount('#app');

View File

@ -1,8 +1,21 @@
// 环境配置
const ENV = process.env.NODE_ENV || 'development';
// API 配置
const API_BASE_URL = process.env.VUE_APP_API_URL;
// 根据环境确定 API URL
let apiUrl;
if (ENV === 'testing') {
apiUrl = 'https://api-dev.beefast.co';
} else if (ENV === 'production') {
apiUrl = 'https://api.beefast.co';
} else {
apiUrl = 'http://localhost:8000';
}
// 使用环境变量中的 API URL如果存在
const API_BASE_URL = process.env.VUE_APP_API_URL || apiUrl;
console.log('配置文件中的环境:', ENV);
console.log('配置文件中的API URL:', API_BASE_URL);
// 当前环境的 API 基础地址
const BASE_URL = API_BASE_URL;

12
src/utils/debug.js Normal file
View File

@ -0,0 +1,12 @@
// 调试环境变量
console.log('===== 环境变量调试信息 =====');
console.log('NODE_ENV:', process.env.NODE_ENV);
console.log('VUE_APP_API_URL:', process.env.VUE_APP_API_URL);
console.log('===========================');
export default {
logEnv: () => {
console.log('当前环境:', process.env.NODE_ENV);
console.log('API地址:', process.env.VUE_APP_API_URL);
}
};

View File

@ -12,23 +12,34 @@ module.exports = (env, argv) => {
// 确定环境
const nodeEnv = env?.testing ? 'testing' : mode;
console.log('构建环境:', nodeEnv);
console.log('命令行参数:', env);
// 加载对应的环境变量文件
const envFile = `.env.${nodeEnv}`;
const defaultEnvFile = '.env';
console.log('尝试加载环境文件:', envFile);
// 加载环境变量
let envConfig = {};
// 先尝试加载默认环境变量文件
if (fs.existsSync(defaultEnvFile)) {
console.log('加载默认环境文件:', defaultEnvFile);
envConfig = dotenv.parse(fs.readFileSync(defaultEnvFile));
}
// 再尝试加载特定环境的环境变量文件
if (fs.existsSync(envFile)) {
console.log('加载特定环境文件:', envFile);
envConfig = { ...envConfig, ...dotenv.parse(fs.readFileSync(envFile)) };
} else {
console.log('环境文件不存在:', envFile);
}
console.log('加载的环境变量:', envConfig);
// 将环境变量转换为 webpack 定义插件需要的格式
const envKeys = Object.keys(envConfig).reduce((prev, next) => {
prev[`process.env.${next}`] = JSON.stringify(envConfig[next]);
@ -38,7 +49,16 @@ module.exports = (env, argv) => {
// 确保 NODE_ENV 被正确设置
envKeys['process.env.NODE_ENV'] = JSON.stringify(nodeEnv);
console.log(`Building for ${nodeEnv} environment`);
// 直接设置 VUE_APP_API_URL
if (nodeEnv === 'testing') {
envKeys['process.env.VUE_APP_API_URL'] = JSON.stringify('https://api-dev.beefast.co');
} else if (nodeEnv === 'production') {
envKeys['process.env.VUE_APP_API_URL'] = JSON.stringify('https://api.beefast.co');
} else {
envKeys['process.env.VUE_APP_API_URL'] = JSON.stringify('http://localhost:8000');
}
console.log('注入的环境变量:', envKeys);
return {
mode,