universo-platform-2d

Форк
0
85 строк · 2.1 Кб
1
function testPackageName(regexp: RegExp): (module: any) => boolean {
2
  return (module: any) =>
3
    module.nameForCondition && regexp.test(module.nameForCondition());
4
}
5

6
// https://hackernoon.com/the-100-correct-way-to-split-your-chunks-with-webpack-f8a9df5b7758
7
export const productionCacheGroups = {
8
  errorHandler: {
9
    test: /global-error-handler/,
10
    priority: 1000,
11
    enforce: true,
12
  },
13
  asyncVendor: {
14
    test: /[\\/]node_modules[\\/]/,
15
    name(module: any) {
16
      // monorepo linked in node_modules, so it's not a npm package
17
      if (!module.context.includes('node_modules')) {
18
        return `app-async`;
19
      }
20
      const name = module.context.match(
21
        /[\\/]node_modules[\\/](.*?)([\\/]|$)/
22
      )?.[1];
23
      return `npm-async-${name}`;
24
    },
25
    priority: Number.MAX_SAFE_INTEGER,
26
    chunks: 'async' as const,
27
  },
28
  blocksuite: {
29
    name: `npm-blocksuite`,
30
    test: testPackageName(/[\\/]node_modules[\\/](@blocksuite)[\\/]/),
31
    priority: 200,
32
    enforce: true,
33
  },
34
  react: {
35
    name: `npm-react`,
36
    test: testPackageName(
37
      /[\\/]node_modules[\\/](react|react-dom|scheduler)[\\/]/
38
    ),
39
    priority: 200,
40
    enforce: true,
41
  },
42
  jotai: {
43
    name: `npm-jotai`,
44
    test: testPackageName(/[\\/]node_modules[\\/](jotai)[\\/]/),
45
    priority: 200,
46
    enforce: true,
47
  },
48
  rxjs: {
49
    name: `npm-rxjs`,
50
    test: testPackageName(/[\\/]node_modules[\\/]rxjs[\\/]/),
51
    priority: 200,
52
    enforce: true,
53
  },
54
  lodash: {
55
    name: `npm-lodash`,
56
    test: testPackageName(/[\\/]node_modules[\\/]lodash[\\/]/),
57
    priority: 200,
58
    enforce: true,
59
  },
60
  emotion: {
61
    name: `npm-emotion`,
62
    test: testPackageName(/[\\/]node_modules[\\/](@emotion)[\\/]/),
63
    priority: 200,
64
    enforce: true,
65
  },
66
  vendor: {
67
    name: 'vendor',
68
    test: /[\\/]node_modules[\\/]/,
69
    priority: 190,
70
    enforce: true,
71
  },
72
  styles: {
73
    name: 'styles',
74
    test: (module: any) =>
75
      module.nameForCondition &&
76
      module.nameForCondition()?.endsWith('.css') &&
77
      !module.type.startsWith('javascript'),
78
    chunks: 'all' as const,
79
    minSize: 1,
80
    minChunks: 1,
81
    reuseExistingChunk: true,
82
    priority: 1000,
83
    enforce: true,
84
  },
85
};
86

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.