A TypeScript implementation of the Java .properties specification, supporting configuration parsing, serialization, and advanced features like variable interpolation and Unicode handling.
npm install properties-like



> A TypeScript implementation of the Java .properties specification), supporting configuration parsing, serialization, and advanced features like variable interpolation and Unicode handling.
---
.properties formatted strings${variable} placeholders for dynamic values\uxxxx escape sequences---
For detailed usage instructions and API references, please visit the official documentation:
---
Create a test.properties file
``Backslash handling
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\
int=1
bool=true
`
`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) {
}
`
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});
}
});
// Output:
// Line 1: key = value
// Line 2: COMMENT: # comment
``---
We welcome contributions from the community! If you find a bug or want to suggest an improvement, feel free to open an issue or submit a pull request.
---
This project is licensed under the MIT License.
---
!Chrome | !Firefox | !Safari | !Opera | !Edge |
--- | --- | --- | --- | --- |
Latest ā | Latest ā | Latest ā | Latest ā | Latest ā |