222
schangxiang@126.com
2025-06-13 6a8393408d8cefcea02b7a598967de8dc1e565c2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
An ini format parser and serializer for node.
 
Sections are treated as nested objects.  Items before the first
heading are saved on the object directly.
 
## Usage
 
Consider an ini-file `config.ini` that looks like this:
 
    ; this comment is being ignored
    scope = global
 
    [database]
    user = dbuser
    password = dbpassword
    database = use_this_database
 
    [paths.default]
    datadir = /var/lib/data
    array[] = first value
    array[] = second value
    array[] = third value
 
You can read, manipulate and write the ini-file like so:
 
    var fs = require('fs')
      , ini = require('ini')
 
    var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8'))
 
    config.scope = 'local'
    config.database.database = 'use_another_database'
    config.paths.default.tmpdir = '/tmp'
    delete config.paths.default.datadir
    config.paths.default.array.push('fourth value')
 
    fs.writeFileSync('./config_modified.ini', ini.stringify(config, { section: 'section' }))
 
This will result in a file called `config_modified.ini` being written
to the filesystem with the following content:
 
    [section]
    scope=local
    [section.database]
    user=dbuser
    password=dbpassword
    database=use_another_database
    [section.paths.default]
    tmpdir=/tmp
    array[]=first value
    array[]=second value
    array[]=third value
    array[]=fourth value
 
 
## API
 
### decode(inistring)
 
Decode the ini-style formatted `inistring` into a nested object.
 
### parse(inistring)
 
Alias for `decode(inistring)`
 
### encode(object, [options])
 
Encode the object `object` into an ini-style formatted string. If the
optional parameter `section` is given, then all top-level properties
of the object are put into this section and the `section`-string is
prepended to all sub-sections, see the usage example above.
 
The `options` object may contain the following:
 
* `section` A string which will be the first `section` in the encoded
  ini data.  Defaults to none.
* `whitespace` Boolean to specify whether to put whitespace around the
  `=` character.  By default, whitespace is omitted, to be friendly to
  some persnickety old parsers that don't tolerate it well.  But some
  find that it's more human-readable and pretty with the whitespace.
 
For backwards compatibility reasons, if a `string` options is passed
in, then it is assumed to be the `section` value.
 
### stringify(object, [options])
 
Alias for `encode(object, [options])`
 
### safe(val)
 
Escapes the string `val` such that it is safe to be used as a key or
value in an ini-file. Basically escapes quotes. For example
 
    ini.safe('"unsafe string"')
 
would result in
 
    "\"unsafe string\""
 
### unsafe(val)
 
Unescapes the string `val`