/
githubmirror
/
angular
Обзор
Документация
Войти
/
githubmirror
/
angular
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
tools/bazel/rollup/path-plugin.cjs
49 строк
2 KB
Joey Perrott
build: use rollup directory instead of rollup through @bazel/rollup (#62556)
10 июл 2025, 02:53
10 июл 2025, 02:53
efc2a41
Код
Авторство
О чём код?
/** * @license * Copyright Google LLC 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.dev/license */ const {existsSync, statSync} = require('node:fs'); const {join} = require('node:path'); const {parseTsconfig, createPathsMatcher} = require('get-tsconfig'); function pathPlugin({tsconfigPath}) { if (tsconfigPath === undefined) { throw Error('A path tsconfig file must be provided.'); } const fullTsconfigPath = join(process.cwd(), tsconfigPath); const tsconfig = parseTsconfig(fullTsconfigPath); const pathMappingMatcher = createPathsMatcher({config: tsconfig, path: fullTsconfigPath}); return { name: 'paths', resolveId: (source) => { /** * A list containing all of the potential paths which match the provided source based * on the paths field from the tsconfig. */ const matchedSources = pathMappingMatcher(source); if (matchedSources.length == 0) { return null; } // We need to check each matched source to see if it loads at the path directly, or is // a directory with an index.js file to import. for (let matchedSource of matchedSources) { const indexPath = join(matchedSource, 'index.js'); if (existsSync(indexPath) && statSync(indexPath).isFile) { return {id: indexPath}; } const filePath = matchedSource + '.js'; if (existsSync(filePath) && statSync(filePath).isFile) { return {id: filePath}; } } throw Error(`Cannot find ${source}\nLocations checked:\n-${matchedSources.join('\n')}`); }, }; } module.exports = {pathPlugin};