Skip to content

Commit

Permalink
feat: sort prettier field (#121)
Browse files Browse the repository at this point in the history
* feat: sort `prettier` field

* refactor: `sortProperty` -> `overProperty`

* refactor: use array instead of arguments on `pipe`

* refactor: more pipes
  • Loading branch information
fisker authored and keithamus committed Jan 7, 2020
1 parent 0c97105 commit 46b5a3c
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
22 changes: 21 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,26 @@ const sortESLintConfig = sortObjectBy([
'reportUnusedDisableDirectives',
])

const sortPrettierConfigKeys = onObject(config =>
sortObjectKeys(config, [
...Object.keys(config)
.filter(key => key !== 'overrides')
.sort(),
'overrides',
]),
)
const sortPrettierConfigOptions = pipe([
sortObject,
overProperty('options', sortObject),
])
const sortPrettierConfigOverrides = onArray(overrides =>
overrides.map(sortPrettierConfigOptions),
)
const sortPrettierConfig = pipe([
sortPrettierConfigKeys,
onObject(overProperty('overrides', sortPrettierConfigOverrides)),
])

// See https://docs.npmjs.com/misc/scripts
const defaultNpmScripts = new Set([
'install',
Expand Down Expand Up @@ -150,7 +170,7 @@ const fields = [
{ key: 'babel', over: sortObject },
{ key: 'browserslist' },
{ key: 'xo', over: sortObject },
{ key: 'prettier', over: sortObject },
{ key: 'prettier', over: sortPrettierConfig },
{ key: 'eslintConfig', over: sortESLintConfig },
{ key: 'eslintIgnore' },
{ key: 'stylelint' },
Expand Down
39 changes: 38 additions & 1 deletion test.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@ for (const field of [
'browserify',
'babel',
'xo',
'prettier',
'ava',
'jest',
'mocha',
Expand Down Expand Up @@ -295,6 +294,44 @@ testField('eslintConfig', [
},
])

// prettier
const sortedPrettierConfig = sortPackageJson({
prettier: {
trailingComma: 'none',
z: 'z',
a: 'a',
overrides: [
{
options: {
trailingComma: 'all',
semi: false,
z: 'z',
a: 'a',
},
z: 'z',
a: 'a',
files: '*.js',
},
],
semi: false,
},
}).prettier
assert.deepStrictEqual(
Object.keys(sortedPrettierConfig),
['a', 'semi', 'trailingComma', 'z', 'overrides'],
'prettier field should sorted',
)
assert.deepStrictEqual(
Object.keys(sortedPrettierConfig.overrides[0]),
['a', 'files', 'options', 'z'],
'prettier.overrides should sorted',
)
assert.deepStrictEqual(
Object.keys(sortedPrettierConfig.overrides[0].options),
['a', 'semi', 'trailingComma', 'z'],
'prettier.overrides[].options should sorted',
)

testField('binary', [
{
value: {
Expand Down

0 comments on commit 46b5a3c

Please sign in to comment.