如何在Node.js中读取.conf文件并提取指定变量值?
在Node.js中高效提取.conf文件变量值的方案
分享两个比逐行读取更简洁可靠的实现方案:
无依赖正则批量匹配
直接读取整个文件内容,用正则一次性捕获所有符合规则的变量,自动跳过注释行,效率更高:
const fs = require('fs').promises; async function parseConfFile(filePath) { const content = await fs.readFile(filePath, 'utf8'); // 匹配规则:跳过#开头的注释行,捕获 VARIABLE = 'value' 格式的变量 const regex = /^\s*(?!#)\s*([A-Z_]+)\s*=\s*'([^']+)'\s*(?:#.*)?$/gm; const variables = {}; let match; while ((match = regex.exec(content)) !== null) { variables[match[1]] = match[2]; } return variables; } // 调用示例 parseConfFile('./your-config.conf') .then(vars => console.log('提取的变量:', vars)) .catch(err => console.error('解析出错:', err));
正则说明
(?!#):确保不是注释行开头([A-Z_]+):捕获变量名(可根据实际规则调整,比如支持小写就改成[a-zA-Z_]+)'([^']+)':捕获单引号包裹的变量值,若要支持转义单引号,可把[^']+改成[^'\\]*(?:\\.[^'\\]*)*(?:#.*)?:兼容行尾的注释(比如VAR = 'val' # 备注)
用轻量库简化解析
如果不想自己维护正则,用dotenv库可以快速搞定——它原本是处理.env文件,但完美适配你的.conf格式,还自动忽略注释:
先安装依赖:
npm install dotenv
然后写代码:
const dotenv = require('dotenv'); const fs = require('fs'); // 读取文件并自定义解析规则,去掉值的单引号 const config = dotenv.parse(fs.readFileSync('./your-config.conf', 'utf8'), { parse: (value) => { if (value.startsWith("'") && value.endsWith("'")) { return value.slice(1, -1); } return value; } }); console.log('提取的变量:', config);
方案对比
- 正则方案:无外部依赖,完全可控,适合需要定制匹配逻辑的场景
- dotenv方案:代码极简,维护成本低,适合标准格式的配置文件
内容的提问来源于stack exchange,提问作者MeG1tsune
相关产品推荐
相关产品推荐

