Skip to content

Commit

Permalink
feat: prepend custom order to default sort order (#108)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
fisker and keithamus committed Dec 30, 2019
1 parent ddebf46 commit 90891fa
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
7 changes: 6 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,12 @@ function sortPackageJson(jsonIsh, options = {}) {
if (Array.isArray(sortOrder)) {
const keys = Object.keys(json)
const [privateKeys, publicKeys] = partition(keys, isPrivateKey)
sortOrder = [...sortOrder, ...publicKeys.sort(), ...privateKeys.sort()]
sortOrder = [
...sortOrder,
...defaultSortOrder,
...publicKeys.sort(),
...privateKeys.sort(),
]
}

const newJson = sortObjectKeys(json, sortOrder)
Expand Down
20 changes: 20 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,26 @@ fs.readFile('./package.json', 'utf8', (error, contents) => {
['z', 'a', 'name'],
)

// defaultSortOrder still applied, when using custom sortOrder
assert.deepStrictEqual(
Object.keys(
sortPackageJson(
{
b: 'b',
a: 'a',
z: 'z',
version: '1.0.0',
name: 'foo',
private: true,
},
{
sortOrder: ['z', 'private'],
},
),
),
['z', 'private', 'name', 'version', 'a', 'b'],
)

// Custom sort order should not effect field sorting
assert.deepStrictEqual(
Object.keys(
Expand Down

0 comments on commit 90891fa

Please sign in to comment.