properties-like
一个 Java .properties规范 的 TypeScript 实现,支持配置解析、序列化、高级特性如变量替换和 Unicode 处理。
安装
bash
npm add properties-like
bash
pnpm add properties-like
bash
yarn add properties-like
html
<script src="https://cdn.jsdelivr.net/npm/properties-like/dist/index.umd.min.js"></script>
<script>
const { Properties } = PropertiesLike;
const props = new Properties();
props.load('key=value\nkey2=value2');
props.getProperty('key'); // ==> 'value'
props.getProperty('key2'); // ==> 'value2'
</script>
使用示例
创建一个 test.properties
文件
# backslash
jdbc.mysql.driver = com.mysql.jdbc.Driver
jdbc.mysql.url = jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=gbk
jdbc .mysql\ .username= test\
123456789
jdbc\:mysql.password = ~\ !@#$%^&*
jdbc.mysql\=maxActive = \ \ 50\
# Unicode
username=\u7528 \u6237 \u540d
\u8d26 \u53f7=test123
\u6635 \u79f0=\u540a \u70b8 \u5929
p
int=1
bool=true
Properties 使用示例
javascript
import { readFileSync } from 'node:fs';
import { Properties } from 'properties-like';
const props = new Properties();
props.parse(readFileSync('./test.properties', 'utf8'));
props.get('jdbc.mysql.driver'); // ==> 'com.mysql.jdbc.Driver'
props.getProperty('jdbc.mysql.driver '); // ==> undefined
props.getProperty('jdbc.mysql.url'); // ==> 'jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk'
props.getProperty('jdbc.mysql .username'); // ==> 'test123456789'
props.getProperty('jdbc:mysql.password'); // ==> '~ !@#$%^&*'
props.getProperty('jdbc.mysql=maxActive'); // ==> ' 50 '
props.getProperty('username'); // ==> '用户名'
props.getProperty('账号'); // ==> 'test123'
props.getProperty('昵称'); // ==> '吊炸天'
props.getProperty('p'); // ==> ''
props.getNumber('int'); // ==> 1
props.getBoolean('bool'); // ==> true
props.forEach((value, key) => {
});
for (let [value, key] of props) {
}
parse 使用示例
typescript
import { parse } from 'properties-like';
parse('key=value\n# comment', {
onData(key, value, lineno) {
console.log(`Line ${lineno}: ${key} = ${value}`);
},
onComment(comment, lineno) {
console.log(`Line ${lineno}: COMMENT: ${comment}`);
}
});
// 输出:
// Line 1: key = value
// Line 2: COMMENT: # comment
浏览器支持
![]() | ![]() | ![]() | ![]() | ![]() |
---|---|---|---|---|
Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ |