Skip to content

Commit 90891fa

Browse files
fiskerkeithamus
andcommitted
feat: prepend custom order to default sort order (#108)
* feat: prepend custom order to default sort order * fix: support function type `options.sortOrder` * refactor: remove redundant code * fix: add defaultSortOrder keys * style: prettier * style: prettier Co-authored-by: Keith Cirkel <keithamus@users.noreply.github.com>
1 parent ddebf46 commit 90891fa

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,12 @@ function sortPackageJson(jsonIsh, options = {}) {
192192
if (Array.isArray(sortOrder)) {
193193
const keys = Object.keys(json)
194194
const [privateKeys, publicKeys] = partition(keys, isPrivateKey)
195-
sortOrder = [...sortOrder, ...publicKeys.sort(), ...privateKeys.sort()]
195+
sortOrder = [
196+
...sortOrder,
197+
...defaultSortOrder,
198+
...publicKeys.sort(),
199+
...privateKeys.sort(),
200+
]
196201
}
197202

198203
const newJson = sortObjectKeys(json, sortOrder)

test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,26 @@ fs.readFile('./package.json', 'utf8', (error, contents) => {
9292
['z', 'a', 'name'],
9393
)
9494

95+
// defaultSortOrder still applied, when using custom sortOrder
96+
assert.deepStrictEqual(
97+
Object.keys(
98+
sortPackageJson(
99+
{
100+
b: 'b',
101+
a: 'a',
102+
z: 'z',
103+
version: '1.0.0',
104+
name: 'foo',
105+
private: true,
106+
},
107+
{
108+
sortOrder: ['z', 'private'],
109+
},
110+
),
111+
),
112+
['z', 'private', 'name', 'version', 'a', 'b'],
113+
)
114+
95115
// Custom sort order should not effect field sorting
96116
assert.deepStrictEqual(
97117
Object.keys(

0 commit comments

Comments
 (0)