angular-docs-cn/packages/circular-deps-test.conf.js
Paul Gschwendtner 44acf6734b build: allow custom module resolution for ts-circular-deps tests (#36226)
Currently the `ts-circular-deps` tool uses a hard-coded module resolver
that only works in the `angular/angular` repository.

If the tool is consumed in other repositories through the shared
dev-infra package, the module resolution won't work, and a few
resolvable imports (usually cross-entry-points) are accidentally
skipped. For each test, the resolution might differ, so tests can
now configure their module resolution in a configuration file.

Note that we intentionally don't rely on tsconfig's for module
resolution as parsing their mappings rather complicates the
circular dependency tool. Additionally, not every test has a
corresponding tsconfig file.

Also, hard-coding mappings to `@angular/*` while accepting a
path to the packages folder would work, but it would mean
that the circular deps tool is no longer self-contained. Rather,
and also for better flexibility, a custom resolver should be
specified.

PR Close #36226
2020-03-27 11:14:49 -07:00

32 lines
1020 B
JavaScript

/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
const path = require('path');
module.exports = {
baseDir: '../',
goldenFile: '../goldens/packages-circular-deps.json',
// The test should not capture deprecated packages such as `http`, or the `webworker` platform.
glob: `./!(http|platform-webworker|platform-webworker-dynamic)/**/*.ts`,
// Command that will be displayed if the golden needs to be updated.
approveCommand: 'yarn ts-circular-deps:approve',
resolveModule: resolveModule
};
/**
* Custom module resolver that maps specifiers starting with `@angular/` to the
* local packages folder. This ensures that cross package/entry-point dependencies
* can be detected.
*/
function resolveModule(specifier) {
if (specifier.startsWith('@angular/')) {
return path.join(__dirname, specifier.substr('@angular/'.length));
}
return null;
}