Skip to content

properties-like

npm package

NPM versionNPM Downloadsjsdelivr

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


Installation

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>

Usage Examples

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\ 

# Unicode support
username=\u7528 \u6237 \u540d
\u8d26 \u53f7=test123
\u663a \u540d=\u540a \u70b8 \u5929
p

int=1
bool=true

Properties Class Example

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 Function Example

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

Browser Support

ChromeFirefoxSafariOperaEdge
Latest ✔Latest ✔Latest ✔Latest ✔Latest ✔