refactor(migrations): ensure CommonJS migrations can be accessed (#43657)

The `@angular/core` migrations are currently published as CommonJS and also not bundled. Schematics, of which migrations are a type, are currently required to be CommonJS modules due to the Schematics Runtime not yet supporting ESM-based schematics. To ensure that the migration files are loaded as CommonJS modules, a nested `package.json` file has been introduced within the `schematics` directory of the package to set the `type` field for all containing JavaScript files as CommonJS. Since the migrations are also not currently bundled and the `devmode` output used to build the migrations will replace all relative imports with fully-qualified module specifiers, an additional `exports` entry must be added to allow the fully-qualified module specifiers to correctly resolve. If `devmode` did not change the relative imports the additional entry would not be needed. Bundling would also remedy the situation and is the long-term path, especially once the migrations are converted to ESM. Additional followup changes should investigate bundling each migration. The additional `exports` entry should be removed if either `devmode` behavior is changed or the migrations are bundled.

PR Close #43657
This commit is contained in:
Charles Lyding
2021-10-04 12:03:19 -04:00
committed by Dylan Hunn
parent e0015d3c45
commit 6d1c2f79da
4 changed files with 15 additions and 1 deletions
@@ -72,6 +72,9 @@ describe('@angular/core ng_package', () => {
node: './fesm2015/testing.mjs',
default: './fesm2020/testing.mjs',
},
'./schematics/*': {
'default': './schematics/*.js',
},
}
}));
});
+5
View File
@@ -7,6 +7,11 @@
"engines": {
"node": "^12.14.1 || >=14.0.0"
},
"exports": {
"./schematics/*": {
"default": "./schematics/*.js"
}
},
"dependencies": {
"tslib": "^2.3.0"
},
+4 -1
View File
@@ -7,7 +7,10 @@ exports_files([
pkg_npm(
name = "npm_package",
srcs = ["migrations.json"],
srcs = [
"migrations.json",
"package.json",
],
visibility = ["//packages/core:__pkg__"],
deps = [
"//packages/core/schematics/migrations/abstract-control-parent",
+3
View File
@@ -0,0 +1,3 @@
{
"type": "commonjs"
}