Skip to content

Commit 2e83a7e

Browse files
committed
refactor(config-plugins): shifted the logic for including plugins to the config scaffolder
1 parent e7bf375 commit 2e83a7e

File tree

4 files changed

+22
-37
lines changed

4 files changed

+22
-37
lines changed

src/config-scaffolder.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {promises as fs} from 'node:fs';
22
import {resolve} from 'node:path';
33
import mustache from 'mustache';
44
import filedirname from 'filedirname';
5-
import {dialects} from '@form8ion/javascript-core';
5+
import {dialects, projectTypes} from '@form8ion/javascript-core';
66

77
const [, __dirname] = filedirname();
88

@@ -12,7 +12,7 @@ function determineExtensionFor({dialect}) {
1212
return 'mjs';
1313
}
1414

15-
export default async function ({projectRoot, dialect}) {
15+
export default async function ({projectRoot, dialect, projectType}) {
1616
await fs.writeFile(
1717
`${projectRoot}/rollup.config.${(determineExtensionFor({dialect}))}`,
1818
mustache.render(
@@ -21,5 +21,9 @@ export default async function ({projectRoot, dialect}) {
2121
)
2222
);
2323

24-
return {};
24+
return {
25+
...projectTypes.CLI === projectType && {
26+
devDependencies: ['@rollup/plugin-json', 'rollup-plugin-executable']
27+
}
28+
};
2529
}

src/config-scaffolder.test.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {promises as fs} from 'node:fs';
22
import mustache from 'mustache';
3-
import {dialects} from '@form8ion/javascript-core';
3+
import {dialects, projectTypes} from '@form8ion/javascript-core';
44

55
import any from '@travi/any';
66
import {beforeEach, describe, expect, it, vi} from 'vitest';
@@ -38,4 +38,12 @@ describe('config scaffolder', () => {
3838

3939
expect(fs.writeFile).toHaveBeenCalledWith(`${projectRoot}/rollup.config.js`, renderedTemplate);
4040
});
41+
42+
it('should adjust for CLI projects', async () => {
43+
const dialect = any.word();
44+
45+
expect(await scaffoldConfig({projectRoot, dialect, projectType: projectTypes.CLI})).toEqual({
46+
devDependencies: ['@rollup/plugin-json', 'rollup-plugin-executable']
47+
});
48+
});
4149
});

src/scaffolder.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
import deepmerge from 'deepmerge';
2-
import {projectTypes} from '@form8ion/javascript-core';
32

43
import scaffoldConfig from './config-scaffolder.js';
54
import scaffoldDialect from './dialect.js';
65

76
export async function scaffold({projectRoot, dialect, projectType}) {
8-
await scaffoldConfig({projectRoot, dialect});
9-
107
return deepmerge.all([
118
{
129
devDependencies: ['rollup', 'rollup-plugin-auto-external'],
@@ -15,11 +12,7 @@ export async function scaffold({projectRoot, dialect, projectType}) {
1512
watch: "run-s 'build:js -- --watch'"
1613
}
1714
},
18-
{
19-
...projectTypes.CLI === projectType && {
20-
devDependencies: ['@rollup/plugin-json', 'rollup-plugin-executable']
21-
}
22-
},
15+
await scaffoldConfig({projectRoot, dialect, projectType}),
2316
scaffoldDialect({dialect})
2417
]);
2518
}

src/scaffolder.test.js

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import deepmerge from 'deepmerge';
2-
import {dialects, projectTypes} from '@form8ion/javascript-core';
32

43
import any from '@travi/any';
54
import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
@@ -27,8 +26,11 @@ describe('rollup scaffolder', () => {
2726

2827
it('should configure rollup', async () => {
2928
const dialect = any.word();
29+
const projectType = any.word();
3030
const dialectResults = any.simpleObject();
31+
const configResults = any.simpleObject();
3132
when(scaffoldDialect).calledWith({dialect}).mockReturnValue(dialectResults);
33+
when(scaffoldConfig).calledWith({projectRoot, dialect, projectType}).mockResolvedValue(configResults);
3234
when(deepmerge.all)
3335
.calledWith([
3436
{
@@ -38,35 +40,13 @@ describe('rollup scaffolder', () => {
3840
watch: 'run-s \'build:js -- --watch\''
3941
}
4042
},
41-
{},
43+
configResults,
4244
dialectResults
4345
])
4446
.mockReturnValue(mergedResults);
4547

46-
const results = await scaffold({projectRoot, dialect});
48+
const results = await scaffold({projectRoot, dialect, projectType});
4749

4850
expect(results).toEqual(mergedResults);
49-
expect(scaffoldConfig).toHaveBeenCalledWith({projectRoot, dialect});
50-
});
51-
52-
it('should handle details for a CLI project', async () => {
53-
when(deepmerge.all)
54-
.calledWith([
55-
{
56-
devDependencies: ['rollup', 'rollup-plugin-auto-external'],
57-
scripts: {
58-
'build:js': 'rollup --config',
59-
watch: 'run-s \'build:js -- --watch\''
60-
}
61-
},
62-
{
63-
devDependencies: ['@rollup/plugin-json', 'rollup-plugin-executable']
64-
},
65-
{}
66-
])
67-
.mockReturnValue(mergedResults);
68-
69-
expect(await scaffold({projectRoot, dialect: dialects.BABEL, projectType: projectTypes.CLI}))
70-
.toEqual(mergedResults);
7151
});
7252
});

0 commit comments

Comments
 (0)