# env-local-plugin **Repository Path**: opqo/env-local-plugin ## Basic Information - **Project Name**: env-local-plugin - **Description**: 用于制定 webpack vite 等工具,.env 文件解析规则 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-26 - **Last Updated**: 2025-07-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EnvLocalPlugin ## 使用方式 ### webpack (const EnvLocalPlugin = require('env-local-plugin'); ) ![alt text](image-1.png) ### vite (import EnvLocalPlugin from 'env-local-plugin';) ![alt text](image.png) ## registerEnvLocalPlugin 插件注册 ```js function getKey(key: string, options: EnvLocalPluginOptions): string { if (key === 'NODE_ENV') { return 'VITE_USER_NODE_ENV'; } if (!options.vite.preStr && !key.startsWith('VITE_')) { return ""; } if (key.startsWith('VITE_')) { return key; } else if (key.startsWith("_")) { return `VITE${key}`; } else { return `VITE_${key}`; } } EnvLocalPlugin.registerEnvLocalPlugin('vite', (options, getExpandedEnv) => { return { name: 'env-local-plugin', configResolved(resolvedConfig) { ** // 存储最终解析的配置 const basePath = process.cwd(); const NODE_ENV = resolvedConfig.mode || process.env.NODE_ENV || 'development'; process.env.NODE_ENV = NODE_ENV; const expandedEnv = getExpandedEnv(NODE_ENV, basePath); console.log("opt", options) console.log('Result:', expandedEnv); // 将变量注入 env /**** */ console.log('resolvedConfig', resolvedConfig.env);** for (const [key, value] of Object.entries(expandedEnv)) { const newKey = getKey(key, _options); // 如果 preStr 为 false,只处理 VITE_ 开头的变量 if (!_options.vite.preStr && !key.startsWith('VITE_')) { continue; } // 如果转换后的键为空,则跳过 if (newKey === "") { continue; } // 处理值的类型转换 const processedValue = value === "true" ? true : value === "false" ? false : value; processedEnv[newKey] = processedValue; } console.log("processedEnv:", processedEnv); // 将变量注入 env resolvedConfig.env = { ...(resolvedConfig.env || {}), ...processedEnv }; console.log('resolvedConfig.env', resolvedConfig.env); }, }; }) ```