Skip to content

Commit 523a2bb

Browse files
authored
Downstreamed changes from @embroider/addon-blueprint (#14)
* chore: Sorted the file paths in publicEntrypoints (patches #11) * chore: Renamed addon-main.js to addon-main.cjs * chore: Updated test fixtures * bugfix: Updated other fields differently when the addon has TypeScript * chore: Updated test fixtures * chore: Combined rollup.config.js and rollup.config.mjs * chore: Updated test fixtures * chore: Updated moveToAddonAndTestApp to consider .cjs files and .stylelintignore --------- Co-authored-by: ijlee2 <[email protected]>
1 parent 2e9c2f8 commit 523a2bb

File tree

40 files changed

+204
-159
lines changed

40 files changed

+204
-159
lines changed

src/blueprints/ember-addon/__addonLocation__/rollup.config.js

Lines changed: 0 additions & 58 deletions
This file was deleted.

src/blueprints/ember-addon/__addonLocation__/rollup.config.mjs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import typescript from 'rollup-plugin-ts';
1+
<% if (options.packages.addon.hasTypeScript) { %>import typescript from 'rollup-plugin-ts';<% } else { %>import { babel } from '@rollup/plugin-babel';<% } %>
22
import copy from 'rollup-plugin-copy';
33
import { Addon } from '@embroider/addon-dev/rollup';
44

@@ -27,13 +27,22 @@ export default {
2727
// package names.
2828
addon.dependencies(),
2929

30-
// compile TypeScript to latest JavaScript, including Babel transpilation
30+
<% if (options.packages.addon.hasTypeScript) { %> // compile TypeScript to latest JavaScript, including Babel transpilation
3131
typescript({
3232
transpiler: 'babel',
3333
browserslist: false,
3434
transpileOnly: false,
3535
}),
36-
36+
<% } else { %> // This babel config should *not* apply presets or compile away ES modules.
37+
// It exists only to provide development niceties for you, like automatic
38+
// template colocation.
39+
//
40+
// By default, this will load the actual babel config from the file
41+
// babel.config.json.
42+
babel({
43+
babelHelpers: 'bundled',
44+
}),
45+
<% } %>
3746
// Ensure that standalone .hbs files are properly integrated as Javascript.
3847
addon.hbs(),
3948

src/migration/ember-addon/steps/analyze-addon.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ function getPublicEntrypoints(options) {
4747
})
4848
.map((filePath) => {
4949
return filePath.replace(/ts$/, 'js');
50-
});
50+
})
51+
.sort();
5152
}
5253

5354
export function analyzeAddon(options) {

src/migration/ember-addon/steps/create-files-from-blueprint.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ function getFilesToSkip(options) {
3030

3131
const files = new Set();
3232

33-
if (packages.addon.hasTypeScript) {
34-
files.add('__addonLocation__/rollup.config.js');
35-
} else {
36-
files.add('__addonLocation__/rollup.config.mjs');
33+
if (!packages.addon.hasTypeScript) {
3734
files.add('__addonLocation__/unpublished-development-types/index.d.ts');
3835
files.add('__testAppLocation__/types/global.d.ts');
3936
}

src/migration/ember-addon/steps/move-project-root-files.js

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,27 @@ function copyToAddon(options) {
3535
function moveToAddonAndTestApp(options) {
3636
const { locations, packages, projectRoot } = options;
3737

38-
const files = packages.addon.hasTypeScript
39-
? [
40-
'.eslintignore',
41-
'.eslintrc.js',
42-
'.gitignore',
43-
'.prettierignore',
44-
'.prettierrc.js',
45-
'.stylelintrc.js',
46-
'.template-lintrc.js',
47-
'package.json',
48-
'tsconfig.json',
49-
]
50-
: [
51-
'.eslintignore',
52-
'.eslintrc.js',
53-
'.gitignore',
54-
'.prettierignore',
55-
'.prettierrc.js',
56-
'.stylelintrc.js',
57-
'.template-lintrc.js',
58-
'package.json',
59-
];
38+
const files = new Set([
39+
'.eslintignore',
40+
'.eslintrc.cjs',
41+
'.eslintrc.js',
42+
'.gitignore',
43+
'.prettierignore',
44+
'.prettierrc.cjs',
45+
'.prettierrc.js',
46+
'.stylelintignore',
47+
'.stylelintrc.cjs',
48+
'.stylelintrc.js',
49+
'.template-lintrc.cjs',
50+
'.template-lintrc.js',
51+
'package.json',
52+
]);
53+
54+
if (packages.addon.hasTypeScript) {
55+
files.add('tsconfig.json');
56+
}
6057

61-
const filePaths = glob.sync(globPattern(files), {
58+
const filePaths = glob.sync(globPattern([...files]), {
6259
cwd: projectRoot,
6360
});
6461

src/migration/ember-addon/steps/update-addon-package-json.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,40 @@ function updateDevDependencies(packageJson, options) {
7676
packageJson['devDependencies'] = convertToObject(devDependencies);
7777
}
7878

79-
function updateOtherFields(packageJson) {
79+
function updateOtherFields(packageJson, options) {
80+
const { packages } = options;
81+
8082
packageJson['ember-addon'] = {
8183
'app-js': {},
82-
main: 'addon-main.js',
84+
main: 'addon-main.cjs',
8385
type: 'addon',
8486
version: 2,
8587
};
8688

87-
packageJson['exports'] = {
88-
'.': './dist/index.js',
89-
'./*': './dist/*.js',
90-
'./addon-main.js': './addon-main.js',
91-
};
92-
93-
packageJson['files'] = ['addon-main.js', 'dist'];
89+
packageJson['exports'] = packages.addon.hasTypeScript
90+
? {
91+
'.': './dist/index.js',
92+
'./*': {
93+
default: './dist/*.js',
94+
types: './dist/*.d.ts',
95+
},
96+
'./addon-main.js': './addon-main.cjs',
97+
}
98+
: {
99+
'.': './dist/index.js',
100+
'./*': './dist/*.js',
101+
'./addon-main.js': './addon-main.cjs',
102+
};
103+
104+
packageJson['files'] = ['addon-main.cjs', 'dist'];
105+
106+
if (packages.addon.hasTypeScript) {
107+
packageJson['typesVersions'] = {
108+
'*': {
109+
'*': ['dist/*'],
110+
},
111+
};
112+
}
94113
}
95114

96115
function updateScripts(packageJson) {
@@ -117,7 +136,7 @@ export function updateAddonPackageJson(options) {
117136
updateDependencies(packageJson, options);
118137
updateDevDependencies(packageJson, options);
119138
updateScripts(packageJson);
120-
updateOtherFields(packageJson);
139+
updateOtherFields(packageJson, options);
121140

122141
const newFile = JSON.stringify(packageJson, null, 2) + '\n';
123142

tests/fixtures/ember-container-query-customizations/output/packages/ember-container-query/package.json

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,27 @@
8080
},
8181
"ember-addon": {
8282
"app-js": {},
83-
"main": "addon-main.js",
83+
"main": "addon-main.cjs",
8484
"type": "addon",
8585
"version": 2
8686
},
8787
"exports": {
8888
".": "./dist/index.js",
89-
"./*": "./dist/*.js",
90-
"./addon-main.js": "./addon-main.js"
89+
"./*": {
90+
"default": "./dist/*.js",
91+
"types": "./dist/*.d.ts"
92+
},
93+
"./addon-main.js": "./addon-main.cjs"
9194
},
9295
"files": [
93-
"addon-main.js",
96+
"addon-main.cjs",
9497
"dist"
95-
]
98+
],
99+
"typesVersions": {
100+
"*": {
101+
"*": [
102+
"dist/*"
103+
]
104+
}
105+
}
96106
}

0 commit comments

Comments
 (0)