/
githubmirror
/
angular-cli
Обзор
Документация
Войти
/
githubmirror
/
angular-cli
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/angular/build/src/tools/esbuild/rxjs-esm-resolution-plugin.ts
48 строк
1 KB
Ash Ramirez
refactor(@angular/cli): update aio links -> adev links
06 июн 2024, 12:12
06 июн 2024, 12:12
434a374
Код
Авторство
О чём код?
/** * @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 */ import type { Plugin } from 'esbuild'; const RXJS_ESM_RESOLUTION = Symbol('RXJS_ESM_RESOLUTION'); /** * Creates a plugin that forces ESM resolution of rxjs. * This is needed as when targeting node, the CJS version is used to the current package conditional exports. * @see: https://github.com/ReactiveX/rxjs/blob/2947583bb33e97f3db9e6d9f6cea70c62a173060/package.json#L19. * * NOTE: This can be removed when and if rxjs adds an import condition that allows ESM usage on Node.js. * * @returns An esbuild plugin. */ export function createRxjsEsmResolutionPlugin(): Plugin { return { name: 'angular-rxjs-resolution', setup(build) { build.onResolve({ filter: /^rxjs/ }, async (args) => { if (args.pluginData?.[RXJS_ESM_RESOLUTION]) { return null; } const { importer, kind, resolveDir, namespace, pluginData = {} } = args; pluginData[RXJS_ESM_RESOLUTION] = true; const result = await build.resolve(args.path, { importer, kind, namespace, pluginData, resolveDir, }); result.path = result.path.replace(/([\\/]dist[\\/])cjs([\\/])/, '$1esm$2'); return result; }); }, }; }