Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/clever-papayas-flash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'arui-scripts': major
---

1. Удалено подключение полифилов из arui-feather.
2. arui-feather удален из списка `serverExternalsExemptions`.

Если вы по какой-то причине хотите вернуть это поведение:
1. Вы можете использовать настройку `clientPolyfillsEntry`, передав туда путь до файла с полифилами (`./node_modules/arui-feather/polyfills.js`)
2. Вы можете использовать оверрайд для `serverExternalsExemptions` и добавить туда regex для feather: `/^arui-feather/`.
3 changes: 1 addition & 2 deletions packages/arui-scripts/docs/modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -459,8 +459,7 @@ Webpack module federation делает абсолютно то же самое,
- **---** Нет возможности использовать модуль в приложении, которое не использует webpack.

Проблема изоляции стилей может быть решена с помощью [shadow dom](#shadow-dom),
или с помощью css modules. Но это накладывает некоторые ограничения либо на поддерживаемые браузеры (shadow dom), либо на
существующую кодовую базу (css modules должны использоваться везде, если у вас будет две версии arui-feather на странице - будет не очень приятно).
или с помощью css modules. Но это накладывает некоторые ограничения либо на поддерживаемые браузеры (shadow dom), либо на существующую кодовую базу (css modules должны использоваться везде).

`compat` модули:
- **+++** Встроенная изоляция стилей. Стили модуля не будут применены к хост-приложению, если только вы не захотите этого.
Expand Down
2 changes: 1 addition & 1 deletion packages/arui-scripts/docs/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ export default settings;
Имя файла для компиляции сервера, по умолчанию `server.js`

#### clientPolyfillsEntry
Точка входа для полифилов. Будет подключаться до основной точки входа. По умолчанию подтягивает полифилы из arui-feather, если он установлен.
Точка входа для полифилов. Будет подключаться до основной точки входа.

#### clientEntry
Точка входа для клиентского приложения. По умолчанию `./src/index`.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { applyOverrides } from './util/apply-overrides';

export const serverExternalsExemptions = applyOverrides('serverExternalsExemptions', [
/^arui-feather/,
/^arui-ft-private/,
/^arui-private/,
/^alfaform-core-ui/,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,34 +31,4 @@ describe('getPolyfills', () => {

expect(polyfills).toMatchObject([]);
});

it('should add feather polyfills when original config is empty and feather polyfills is available', () => {
const appConfig: Partial<AppConfigs> = {
clientPolyfillsEntry: null,
};
const requireResolve = jest.fn(() => 'feather-polyfills-path');

const polyfills = getPolyfills(
appConfig as AppConfigs,
requireResolve as unknown as typeof require.resolve,
);

expect(polyfills).toMatchObject(['feather-polyfills-path']);
expect(requireResolve).toHaveBeenCalledWith('arui-feather/polyfills');
});

it('should not add feather polyfills when original config has any polyfills', () => {
const appConfig: Partial<AppConfigs> = {
clientPolyfillsEntry: [],
};
const requireResolve = jest.fn(() => 'feather-polyfills-path');

const polyfills = getPolyfills(
appConfig as AppConfigs,
requireResolve as unknown as typeof require.resolve,
);

expect(polyfills).toMatchObject([]);
expect(requireResolve).not.toHaveBeenCalled();
});
});
14 changes: 1 addition & 13 deletions packages/arui-scripts/src/configs/util/get-polyfills.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,12 @@
import { AppConfigs } from '../app-configs/types';

// require.resolve вынесен как параметр функции для того, чтоб это можно было протестировать.
// на данный момент jest не дает возможности мокать require.resolve https://github.com/facebook/jest/issues/9543
export function getPolyfills(config: AppConfigs, requireResolve = require.resolve) {
export function getPolyfills(config: AppConfigs) {
const polyfills: string[] = [];

if (config.clientPolyfillsEntry && Array.isArray(config.clientPolyfillsEntry)) {
polyfills.push(...config.clientPolyfillsEntry);
} else if (config.clientPolyfillsEntry) {
polyfills.push(config.clientPolyfillsEntry);
} else {
Comment thread
heymdall-legal marked this conversation as resolved.
// Для сохранения обратной совместимости нам надо добавлять полифилы из физера только тогда, когда пользователь
// не задал свои кастомные полифилы.
try {
const aruiPolyfills = requireResolve('arui-feather/polyfills');

polyfills.push(aruiPolyfills);
} catch (error) {
// just ignore it
}
}

return polyfills;
Expand Down