Skip to content

Commit ec74b4c

Browse files
authored
fix: revert sort pre/post scripts with colon together (#332) (#333)
1 parent 9143e2f commit ec74b4c

File tree

2 files changed

+72
-54
lines changed

2 files changed

+72
-54
lines changed

index.js

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -249,24 +249,9 @@ const sortScripts = onObject((scripts, packageJson) => {
249249
keys.sort()
250250
}
251251

252-
const scriptsKeyMap = new Map()
253-
254-
keys
255-
.flatMap((key) =>
256-
prefixable.has(key) ? [`pre${key}`, key, `post${key}`] : [key],
257-
)
258-
.forEach((key) => {
259-
const [prefix] = key.split(':')
260-
const keySet = scriptsKeyMap.has(prefix)
261-
? scriptsKeyMap.get(prefix)
262-
: new Set()
263-
scriptsKeyMap.set(prefix, keySet.add(key))
264-
})
265-
266-
const order = [...scriptsKeyMap.values()].flat().reduce((keys, keySet) => {
267-
keys.push(...keySet)
268-
return keys
269-
}, [])
252+
const order = keys.flatMap((key) =>
253+
prefixable.has(key) ? [`pre${key}`, key, `post${key}`] : [key],
254+
)
270255

271256
return sortObjectKeys(scripts, order)
272257
})

tests/scripts.js

Lines changed: 69 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -87,44 +87,77 @@ for (const field of ['scripts', 'betterScripts']) {
8787
}
8888

8989
for (const field of ['scripts', 'betterScripts']) {
90-
test(`${field} sort pre/post scripts with colon together`, macro.sortObject, {
91-
value: {
92-
[field]: {
93-
prebuild: 'run-s prebuild:*',
94-
build: 'run-s build:*',
95-
postbuild: 'run-s prebuild:*',
96-
'build:bar': 'node bar.js',
97-
'build:baz': 'node baz.js',
98-
'build:foo': 'node foo.js',
99-
'd-unrelated': '..',
100-
'e-unrelated': '..',
101-
'f-unrelated': '..',
102-
'postbuild:1': 'node prebuild.js 1',
103-
'postbuild:2': 'node prebuild.js 2',
104-
'postbuild:3': 'node prebuild.js 3',
105-
'prebuild:1': 'node prebuild.js 1',
106-
'prebuild:2': 'node prebuild.js 2',
107-
'prebuild:3': 'node prebuild.js 3',
90+
test(
91+
`${field} does not sort pre/post scripts with colon together`,
92+
macro.sortObject,
93+
{
94+
value: {
95+
[field]: {
96+
prebuild: 'run-s prebuild:*',
97+
'prebuild:1': 'node prebuild.js 1',
98+
'prebuild:2': 'node prebuild.js 2',
99+
'prebuild:3': 'node prebuild.js 3',
100+
build: 'run-s build:*',
101+
'build:bar': 'node bar.js',
102+
'build:baz': 'node baz.js',
103+
'build:foo': 'node foo.js',
104+
postbuild: 'run-s prebuild:*',
105+
'postbuild:1': 'node prebuild.js 1',
106+
'postbuild:2': 'node prebuild.js 2',
107+
'postbuild:3': 'node prebuild.js 3',
108+
'd-unrelated': '..',
109+
'e-unrelated': '..',
110+
'f-unrelated': '..',
111+
},
112+
},
113+
expect: {
114+
[field]: {
115+
prebuild: 'run-s prebuild:*',
116+
build: 'run-s build:*',
117+
postbuild: 'run-s prebuild:*',
118+
'build:bar': 'node bar.js',
119+
'build:baz': 'node baz.js',
120+
'build:foo': 'node foo.js',
121+
'd-unrelated': '..',
122+
'e-unrelated': '..',
123+
'f-unrelated': '..',
124+
'postbuild:1': 'node prebuild.js 1',
125+
'postbuild:2': 'node prebuild.js 2',
126+
'postbuild:3': 'node prebuild.js 3',
127+
'prebuild:1': 'node prebuild.js 1',
128+
'prebuild:2': 'node prebuild.js 2',
129+
'prebuild:3': 'node prebuild.js 3',
130+
},
108131
},
109132
},
110-
expect: {
111-
[field]: {
112-
prebuild: 'run-s prebuild:*',
113-
'prebuild:1': 'node prebuild.js 1',
114-
'prebuild:2': 'node prebuild.js 2',
115-
'prebuild:3': 'node prebuild.js 3',
116-
build: 'run-s build:*',
117-
'build:bar': 'node bar.js',
118-
'build:baz': 'node baz.js',
119-
'build:foo': 'node foo.js',
120-
postbuild: 'run-s prebuild:*',
121-
'postbuild:1': 'node prebuild.js 1',
122-
'postbuild:2': 'node prebuild.js 2',
123-
'postbuild:3': 'node prebuild.js 3',
124-
'd-unrelated': '..',
125-
'e-unrelated': '..',
126-
'f-unrelated': '..',
133+
)
134+
}
135+
136+
for (const field of ['scripts', 'betterScripts']) {
137+
test(
138+
`${field} sort pre/post scripts together with base script independent of colon in name`,
139+
macro.sortObject,
140+
{
141+
value: {
142+
[field]: {
143+
'pretest:es-check': 'echo',
144+
'posttest:es-check': 'echo',
145+
test: 'echo',
146+
'test:coverage': 'echo',
147+
'test:es-check': 'echo',
148+
'test:types': 'echo',
149+
},
150+
},
151+
expect: {
152+
[field]: {
153+
test: 'echo',
154+
'test:coverage': 'echo',
155+
'pretest:es-check': 'echo',
156+
'test:es-check': 'echo',
157+
'posttest:es-check': 'echo',
158+
'test:types': 'echo',
159+
},
127160
},
128161
},
129-
})
162+
)
130163
}

0 commit comments

Comments
 (0)