@flatjs/evolve 1.7.3 → 1.8.1-next.100

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. package/CHANGELOG.md +774 -0
  2. package/LICENSE +21 -0
  3. package/README.md +10 -46
  4. package/dist/constants.d.ts +15 -0
  5. package/dist/constants.js +1 -0
  6. package/dist/create-webpack/create-externals.d.ts +4 -0
  7. package/dist/create-webpack/create-externals.js +1 -0
  8. package/dist/create-webpack/create-optimization.d.ts +3 -0
  9. package/dist/create-webpack/create-optimization.js +1 -0
  10. package/dist/create-webpack/create-output.d.ts +3 -0
  11. package/dist/create-webpack/create-output.js +1 -0
  12. package/dist/create-webpack/create-performance.d.ts +2 -0
  13. package/dist/create-webpack/create-performance.js +1 -0
  14. package/dist/create-webpack/create-plugins.d.ts +4 -0
  15. package/dist/create-webpack/create-plugins.js +1 -0
  16. package/dist/create-webpack/create-resolve.d.ts +2 -0
  17. package/dist/create-webpack/create-resolve.js +1 -0
  18. package/dist/create-webpack/create-rule-sets.d.ts +4 -0
  19. package/dist/create-webpack/create-rule-sets.js +1 -0
  20. package/dist/create-webpack/load-webpack-config.d.ts +10 -0
  21. package/dist/create-webpack/load-webpack-config.js +1 -0
  22. package/dist/create-webpack/rule-sets/constants.d.ts +3 -0
  23. package/dist/create-webpack/rule-sets/constants.js +1 -0
  24. package/dist/create-webpack/rule-sets/rule-assets.d.ts +10 -0
  25. package/dist/create-webpack/rule-sets/rule-assets.js +1 -0
  26. package/dist/create-webpack/rule-sets/rule-css.d.ts +11 -0
  27. package/dist/create-webpack/rule-sets/rule-css.js +1 -0
  28. package/dist/create-webpack/rule-sets/rule-less.d.ts +26 -0
  29. package/dist/create-webpack/rule-sets/rule-less.js +1 -0
  30. package/dist/create-webpack/rule-sets/rule-scripts.d.ts +3 -0
  31. package/dist/create-webpack/rule-sets/rule-scripts.js +1 -0
  32. package/dist/create-webpack/rule-sets/rule-svg-icon.d.ts +6 -0
  33. package/dist/create-webpack/rule-sets/rule-svg-icon.js +1 -0
  34. package/dist/create-webpack/rule-sets/rule-utils.d.ts +7 -0
  35. package/dist/create-webpack/rule-sets/rule-utils.js +1 -0
  36. package/dist/create-webpack/types.d.ts +2 -0
  37. package/dist/create-webpack/types.js +1 -0
  38. package/dist/default-options.d.ts +2 -0
  39. package/dist/default-options.js +1 -0
  40. package/dist/define-config/define-config.d.ts +24 -0
  41. package/dist/define-config/define-config.js +1 -0
  42. package/dist/define-config/index.d.ts +1 -0
  43. package/dist/define-config/index.js +1 -0
  44. package/dist/dev-server/add-compiler-to-dev-server.d.ts +10 -0
  45. package/dist/dev-server/add-compiler-to-dev-server.js +1 -0
  46. package/dist/dev-server/create-app-page-route.d.ts +7 -0
  47. package/dist/dev-server/create-app-page-route.js +1 -0
  48. package/dist/dev-server/create-dev-server-compiler-tasks.d.ts +3 -0
  49. package/dist/dev-server/create-dev-server-compiler-tasks.js +1 -0
  50. package/dist/dev-server/create-dev-server-entries.d.ts +4 -0
  51. package/dist/dev-server/create-dev-server-entries.js +1 -0
  52. package/dist/dev-server/create-dev-server.d.ts +6 -0
  53. package/dist/dev-server/create-dev-server.js +1 -0
  54. package/dist/dev-server/index.d.ts +6 -0
  55. package/dist/dev-server/index.js +1 -0
  56. package/dist/dev-server/middlewares/create-page-middleware.d.ts +37 -0
  57. package/dist/dev-server/middlewares/create-page-middleware.js +1 -0
  58. package/dist/dev-server/middlewares/create-public-assets-middleware.d.ts +2 -0
  59. package/dist/dev-server/middlewares/create-public-assets-middleware.js +1 -0
  60. package/dist/dev-server/middlewares/index.d.ts +2 -0
  61. package/dist/dev-server/middlewares/index.js +1 -0
  62. package/dist/errors/evolve-build-error.d.ts +4 -0
  63. package/dist/errors/evolve-build-error.js +1 -0
  64. package/dist/helpers/allow-px2rem-for-module.d.ts +3 -0
  65. package/dist/helpers/allow-px2rem-for-module.js +1 -0
  66. package/dist/helpers/assert-only-single-entry-item.d.ts +7 -0
  67. package/dist/helpers/assert-only-single-entry-item.js +1 -0
  68. package/dist/helpers/chunk-entry-map.d.ts +7 -0
  69. package/dist/helpers/chunk-entry-map.js +1 -0
  70. package/dist/helpers/enable-bundle-hashname-for-module.d.ts +3 -0
  71. package/dist/helpers/enable-bundle-hashname-for-module.js +1 -0
  72. package/dist/helpers/filter-actived-entries.d.ts +16 -0
  73. package/dist/helpers/filter-actived-entries.js +1 -0
  74. package/dist/helpers/get-bundle-file-name.d.ts +14 -0
  75. package/dist/helpers/get-bundle-file-name.js +1 -0
  76. package/dist/helpers/get-git-root.d.ts +1 -0
  77. package/dist/helpers/get-git-root.js +1 -0
  78. package/dist/helpers/get-html-plugin-config.d.ts +20 -0
  79. package/dist/helpers/get-html-plugin-config.js +1 -0
  80. package/dist/helpers/get-max-process-tasks.d.ts +1 -0
  81. package/dist/helpers/get-max-process-tasks.js +1 -0
  82. package/dist/helpers/get-pacakge-dir.d.ts +1 -0
  83. package/dist/helpers/get-pacakge-dir.js +1 -0
  84. package/dist/helpers/index.d.ts +17 -0
  85. package/dist/helpers/index.js +1 -0
  86. package/dist/helpers/json-serializer.d.ts +7 -0
  87. package/dist/helpers/json-serializer.js +1 -0
  88. package/dist/helpers/merge-babel-options.d.ts +4 -0
  89. package/dist/helpers/merge-babel-options.js +1 -0
  90. package/dist/helpers/normalize-entry-map.d.ts +15 -0
  91. package/dist/helpers/normalize-entry-map.js +1 -0
  92. package/dist/helpers/normalize-resolve-alias.d.ts +1 -0
  93. package/dist/helpers/normalize-resolve-alias.js +1 -0
  94. package/dist/helpers/open-page.d.ts +7 -0
  95. package/dist/helpers/open-page.js +1 -0
  96. package/dist/helpers/print-log.d.ts +8 -0
  97. package/dist/helpers/print-log.js +1 -0
  98. package/dist/helpers/refresh-evolve-mock-options.d.ts +3 -0
  99. package/dist/helpers/refresh-evolve-mock-options.js +1 -0
  100. package/dist/helpers/resolve-entry-map-input-files.d.ts +8 -0
  101. package/dist/helpers/resolve-entry-map-input-files.js +1 -0
  102. package/dist/helpers/script-injects.d.ts +11 -0
  103. package/dist/helpers/script-injects.js +1 -0
  104. package/dist/helpers/should-enable-react-fast-refresh.d.ts +3 -0
  105. package/dist/helpers/should-enable-react-fast-refresh.js +1 -0
  106. package/dist/helpers/split-to-multi-compiler.d.ts +8 -0
  107. package/dist/helpers/split-to-multi-compiler.js +1 -0
  108. package/dist/index.d.ts +5 -0
  109. package/dist/index.js +1 -0
  110. package/dist/load-config/index.d.ts +1 -0
  111. package/dist/load-config/index.js +1 -0
  112. package/dist/load-config/load-evolve-config.d.ts +11 -0
  113. package/dist/load-config/load-evolve-config.js +1 -0
  114. package/dist/loaders/loader-icon.cjs +33 -0
  115. package/dist/loaders/loader-icon.d.cts +1 -0
  116. package/dist/main/env-verify.d.ts +2 -0
  117. package/dist/main/env-verify.js +1 -0
  118. package/dist/main/get-worker-path.d.ts +1 -0
  119. package/dist/main/get-worker-path.js +1 -0
  120. package/dist/main/index.d.ts +4 -0
  121. package/dist/main/index.js +1 -0
  122. package/dist/main/prepare-build.d.ts +9 -0
  123. package/dist/main/prepare-build.js +1 -0
  124. package/dist/main/prepare-serve.d.ts +9 -0
  125. package/dist/main/prepare-serve.js +1 -0
  126. package/dist/main/prepare-static.d.ts +7 -0
  127. package/dist/main/prepare-static.js +1 -0
  128. package/dist/main/start-build-dynamic.d.ts +20 -0
  129. package/dist/main/start-build-dynamic.js +1 -0
  130. package/dist/main/start-build-worker.d.ts +12 -0
  131. package/dist/main/start-build-worker.js +1 -0
  132. package/dist/main/start-build.d.ts +5 -0
  133. package/dist/main/start-build.js +1 -0
  134. package/dist/main/start-one-entry-build.d.ts +13 -0
  135. package/dist/main/start-one-entry-build.js +1 -0
  136. package/dist/main/start-serve.d.ts +11 -0
  137. package/dist/main/start-serve.js +1 -0
  138. package/dist/main/start-static.d.ts +10 -0
  139. package/dist/main/start-static.js +1 -0
  140. package/dist/minimizer/create-minimizers.d.ts +3 -0
  141. package/dist/minimizer/create-minimizers.js +1 -0
  142. package/dist/minimizer/default-options.d.ts +2 -0
  143. package/dist/minimizer/default-options.js +1 -0
  144. package/dist/minimizer/image-minimizer.d.ts +16 -0
  145. package/dist/minimizer/image-minimizer.js +1 -0
  146. package/dist/minimizer/index.d.ts +1 -0
  147. package/dist/minimizer/index.js +1 -0
  148. package/dist/minimizer/terser-minimizer.d.ts +6 -0
  149. package/dist/minimizer/terser-minimizer.js +3 -0
  150. package/dist/minimizer/types.d.ts +2 -0
  151. package/dist/minimizer/types.js +1 -0
  152. package/dist/plugins/circular-dependency/circular-dependency-plugin.d.ts +54 -0
  153. package/dist/plugins/circular-dependency/circular-dependency-plugin.js +1 -0
  154. package/dist/plugins/circular-dependency/index.d.ts +7 -0
  155. package/dist/plugins/circular-dependency/index.js +1 -0
  156. package/dist/plugins/clean-webpack/clean-webpack-plugin.d.ts +67 -0
  157. package/dist/plugins/clean-webpack/clean-webpack-plugin.js +1 -0
  158. package/dist/plugins/clean-webpack/index.d.ts +9 -0
  159. package/dist/plugins/clean-webpack/index.js +1 -0
  160. package/dist/plugins/define-variable/define-variable-plugin.d.ts +14 -0
  161. package/dist/plugins/define-variable/define-variable-plugin.js +1 -0
  162. package/dist/plugins/define-variable/index.d.ts +1 -0
  163. package/dist/plugins/define-variable/index.js +1 -0
  164. package/dist/plugins/html-inject-scripts/plugin-html-inject-script.d.ts +8 -0
  165. package/dist/plugins/html-inject-scripts/plugin-html-inject-script.js +1 -0
  166. package/dist/plugins/module-federation/external-template-remotes.d.ts +4 -0
  167. package/dist/plugins/module-federation/external-template-remotes.js +1 -0
  168. package/dist/plugins/module-federation/index.d.ts +1 -0
  169. package/dist/plugins/module-federation/index.js +1 -0
  170. package/dist/plugins/module-federation/module-federation.d.ts +4 -0
  171. package/dist/plugins/module-federation/module-federation.js +1 -0
  172. package/dist/plugins/multi-html/index.d.ts +4 -0
  173. package/dist/plugins/multi-html/index.js +1 -0
  174. package/dist/plugins/multi-html/multi-html-cdn-plugin.d.ts +17 -0
  175. package/dist/plugins/multi-html/multi-html-cdn-plugin.js +1 -0
  176. package/dist/plugins/multi-html/multi-html-plugin.d.ts +11 -0
  177. package/dist/plugins/multi-html/multi-html-plugin.js +1 -0
  178. package/dist/types/index.d.ts +8 -0
  179. package/dist/types/index.js +1 -0
  180. package/dist/types/types-ci.d.ts +23 -0
  181. package/dist/types/types-ci.js +1 -0
  182. package/dist/types/types-dev-server.d.ts +65 -0
  183. package/dist/types/types-dev-server.js +1 -0
  184. package/dist/types/types-entry-map.d.ts +71 -0
  185. package/dist/types/types-entry-map.js +1 -0
  186. package/dist/types/types-federation.d.ts +120 -0
  187. package/dist/types/types-federation.js +1 -0
  188. package/dist/types/types-loader-options.d.ts +76 -0
  189. package/dist/types/types-loader-options.js +1 -0
  190. package/dist/types/types-modular-import.d.ts +38 -0
  191. package/dist/types/types-modular-import.js +1 -0
  192. package/dist/types/types-multi-html.d.ts +75 -0
  193. package/dist/types/types-multi-html.js +1 -0
  194. package/dist/types/types-options.d.ts +117 -0
  195. package/dist/types/types-options.js +1 -0
  196. package/dist/types/types-plugin-options.d.ts +7 -0
  197. package/dist/types/types-plugin-options.js +1 -0
  198. package/dist/types/types-webpack.d.ts +96 -0
  199. package/dist/types/types-webpack.js +1 -0
  200. package/index.js +1 -4
  201. package/package.json +118 -61
  202. package/templates/html-plugin/index-dev.html +23 -46
  203. package/templates/html-plugin/index-inte.html +23 -46
  204. package/templates/html-plugin/index-inte2.html +23 -46
  205. package/templates/html-plugin/index-inte3.html +23 -46
  206. package/templates/html-plugin/index-inte4.html +23 -46
  207. package/templates/html-plugin/index-me.html +23 -46
  208. package/templates/html-plugin/index-prod.html +23 -46
  209. package/templates/html-plugin/index-rc.html +22 -46
  210. package/templates/html-plugin/index-uat.html +23 -46
  211. package/templates/main.html +2 -2
  212. package/templates/module-404.html +4 -2
  213. package/templates/module.html +31 -61
  214. package/cjs/index.js +0 -4
  215. package/cjs/loader-icon.js +0 -2
  216. package/index.d.ts +0 -713
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Buildin plugin `babel-plugin-import` configurations
3
+ */
4
+ export type ModularImportOption = {
5
+ /**
6
+ * @example `antd`, `lodash`, `material-ui`, `@flatjs`, `@dimjs`, `@fabric`, `@wine`
7
+ */
8
+ libraryName: string;
9
+ /**
10
+ * Set this option to false if your module does not have a default export.
11
+ * @default false
12
+ */
13
+ transformToDefaultImport?: boolean;
14
+ /**
15
+ * @default: `esm`
16
+ */
17
+ libraryDirectory?: string;
18
+ /**
19
+ * The value will append to `${libraryDirectory}/${transformedMethodName}/${fileName}`
20
+ * e.g. `@scope/app/esm/{moduleName}/index`
21
+ * @default ""
22
+ */
23
+ fileName?: string;
24
+ /**
25
+ * We can use customName to customize import file path.
26
+ * @example `esm/modal`
27
+ */
28
+ customName?: (transformedMethodName: string, file: any) => string;
29
+ /**
30
+ * @default: true
31
+ */
32
+ camel2DashComponentName?: boolean;
33
+ /**
34
+ * @default false
35
+ * @example (name) => `${name}/style/2x` | `boolean` }
36
+ */
37
+ style?: true | 'css' | ((name: string, file: Record<string, unknown>) => string | boolean);
38
+ };
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,75 @@
1
+ import { type HtmlPluginConfigTokenType } from '../helpers/get-html-plugin-config.js';
2
+ export declare type EvolveMultiCdnEnvType = 'me' | 'dev' | 'uat' | 'inte' | 'inte2' | 'inte3' | 'inte4' | 'rc' | 'prod' | 'ntv';
3
+ export type EvolveMultiCDNConfig = {
4
+ [key in EvolveMultiCdnEnvType]?: string[];
5
+ };
6
+ /**
7
+ * Allow us customized to resolve current runtime environment.
8
+ */
9
+ export type EvolveMultiCDNEnvResolver = (url: string) => EvolveMultiCdnEnvType | undefined;
10
+ /**
11
+ * The html plugin configuration for each entry item
12
+ */
13
+ export declare type MultiHtmlCDNEntryItem = {
14
+ /**
15
+ * The title to use for the generated HTML document
16
+ * @default ''
17
+ */
18
+ title?: string;
19
+ /**
20
+ * The favicon url to use for the generated HTML document
21
+ */
22
+ favicon?: string;
23
+ /**
24
+ * webpack relative or absolute path to the template.
25
+ * It must be an absolute path. `path.join(__dirname, `templates/index-{0}.html`)`
26
+ * @default join(evolveRoot, `/templates/html-plugin/index-{0}.html`)
27
+ */
28
+ templatePath?: string;
29
+ /**
30
+ * Indicates if we need to minify html.
31
+ * @default true
32
+ */
33
+ htmlMinify?: boolean;
34
+ /**
35
+ * Support inject viewport scripts in each modules
36
+ * It only available while `allowPx2rem` = true
37
+ * @default ''
38
+ */
39
+ viewport?: string;
40
+ /**
41
+ * Allow us customized inline scripts into compiled html template.
42
+ * @default []
43
+ */
44
+ inlineScripts?: HtmlPluginConfigTokenType<string[]>;
45
+ /**
46
+ * The customized html tags should be inject to `<header />`
47
+ */
48
+ headBeforeHtmlTags?: HtmlPluginConfigTokenType<string[]>;
49
+ /**
50
+ * The ordered styles will be injected start of html head.
51
+ * @default []
52
+ */
53
+ headBeforeStyles?: HtmlPluginConfigTokenType<string[]>;
54
+ /**
55
+ * The ordered scripts will be injected before html head.
56
+ * @default [
57
+ * `https://polyfill.io/v3/polyfill.min.js?features=Array.from%2CArray.isArray%2CArray.of%2CArray.prototype.entries%2CArray.prototype.every%2CArray.prototype.fill%2CArray.prototype.filter%2CArray.prototype.find%2CArray.prototype.findIndex%2CArray.prototype.flat%2CArray.prototype.forEach%2CArray.prototype.flatMap%2CArray.prototype.keys%2CArray.prototype.indexOf%2CArray.prototype.includes%2CArray.prototype.lastIndexOf%2CArray.prototype.map%2CArray.prototype.reduce%2CArray.prototype.reduceRight%2CArray.prototype.some%2CArray.prototype.sort%2CArray.prototype.values%2CArrayBuffer%2CBlob%2CDataView%2CDate.now%2CObject.assign%2CObject.create%2CObject.defineProperties%2CObject.defineProperty%2CObject.entries%2CObject.freeze%2CObject.fromEntries%2CObject.getOwnPropertySymbols%2CObject.getOwnPropertyNames%2CObject.getOwnPropertyDescriptors%2CObject.getOwnPropertyDescriptor%2CObject.getPrototypeOf%2CObject.is%2CObject.isExtensible%2CObject.isFrozen%2CObject.isSealed%2CObject.keys%2CObject.values%2CObject.setPrototypeOf%2CPromise%2CPromise.prototype.finally%2CReflect%2CReflect.apply%2CReflect.construct%2CReflect.defineProperty%2CReflect.deleteProperty%2CReflect.getPrototypeOf%2CReflect.getOwnPropertyDescriptor%2CReflect.get%2CReflect.ownKeys%2CReflect.isExtensible%2CReflect.has%2CReflect.preventExtensions%2CReflect.set%2CReflect.setPrototypeOf%2CSet%2CString.prototype.trimStart%2CString.prototype.trimEnd%2CString.prototype.trim%2CString.prototype.startsWith%2CString.prototype.repeat%2CString.prototype.replaceAll%2CString.prototype.padStart%2CString.prototype.padEnd%2CMap%2CObject.seal%2Cconsole.groupEnd%2Cconsole.group`,
58
+ * `https://unpkg.com/react@17.0.2/umd/react.production.min.js`,
59
+ * `https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js`,
60
+ * `https://unpkg.com/react-router-dom@5.2.0/umd/react-router-dom.min.js`
61
+ * ]
62
+ */
63
+ headBeforeScripts?: HtmlPluginConfigTokenType<string[]>;
64
+ /**
65
+ * The ordered scripts will be injected end of html body.
66
+ * @default []
67
+ */
68
+ bodyAfterScripts?: HtmlPluginConfigTokenType<string[]>;
69
+ /**
70
+ * Give `env` list to exclude from `multi-cdn` plugin.
71
+ * Normally for `me`, `dev`,`uat`, `ntv` env we should use relative assets path instead cdn.
72
+ * @default ['dev', 'ntv']
73
+ */
74
+ excludeCdnEnvs?: EvolveMultiCdnEnvType[];
75
+ };
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,117 @@
1
+ import { type VerifyPackagePattern } from '@armit/package';
2
+ import { type FlatEvolveCI } from './types-ci.js';
3
+ import { type FlatEvolveDevServerOptions } from './types-dev-server.js';
4
+ import { type EvolveEntryMap } from './types-entry-map.js';
5
+ import { type RuleSetLoaderOptions } from './types-loader-options.js';
6
+ import { type EvolveMultiCDNEnvResolver, type EvolveMultiCDNConfig } from './types-multi-html.js';
7
+ import { type EvolvePluginOptions } from './types-plugin-options.js';
8
+ import { type FlatEvolveWebpackOptions } from './types-webpack.js';
9
+ /**
10
+ * Detect locally installed dependencies that have correctly installed from `package.json` declared version `dependencies`
11
+ */
12
+ export type PackageInstallChecker = {
13
+ /**
14
+ * @default false
15
+ */
16
+ enabled?: boolean;
17
+ /**
18
+ * Stop program if we have detect unexpected error.
19
+ * @default false
20
+ */
21
+ throwError?: boolean;
22
+ /**
23
+ * Flat indicates if we need to print all install module graph
24
+ * @default false
25
+ */
26
+ showAllInstalledGraph?: boolean;
27
+ /**
28
+ * Package module name, or module expression. [`^babel-`,`@dimjs/*`]
29
+ * @defalt ['@dimjs/*']
30
+ */
31
+ detectModules?: string[];
32
+ };
33
+ export interface FlatEvolveOptions {
34
+ /**
35
+ * The project workspace directory.
36
+ */
37
+ projectCwd: string;
38
+ /**
39
+ * The virtual path for current `project`
40
+ * e.g. `evolve/test`
41
+ */
42
+ projectVirtualPath: string;
43
+ /**
44
+ * The configurations of `webpack`
45
+ */
46
+ webpack?: FlatEvolveWebpackOptions;
47
+ /**
48
+ * The config options of all rule set loaders.
49
+ */
50
+ loaderOptions: RuleSetLoaderOptions;
51
+ /**
52
+ * The config opotions of all builtin webpack plugins.
53
+ */
54
+ pluginOptions: EvolvePluginOptions;
55
+ /**
56
+ * The configurations of `dev-server`.
57
+ */
58
+ devServer?: FlatEvolveDevServerOptions;
59
+ /**
60
+ * The plugin for `@flatjs/evolve-multi-html-cdn-plugin`
61
+ */
62
+ multiHtmlCdn: EvolveMultiCDNConfig;
63
+ /**
64
+ * Allow us customized to resolve current runtime environment.
65
+ * ignore resolver if return undefined, otherwise use it to match environment.
66
+ * NOTE: Don't using arrow function, because we will inject `envResolver` string to html.
67
+ * @example
68
+ * ```ts
69
+ * //
70
+ * function envResolver(url) {
71
+ * const env = /.*\.(qa|t)\.*\/.exec('//fex.qa.tcshuke.com/')[1];
72
+ * switch(env) {
73
+ * case 't':
74
+ * return 'rc'
75
+ * case 'qa':
76
+ * return 'inte'
77
+ * }
78
+ * }
79
+ * ```
80
+ */
81
+ multiHtmlCdnEnvResolver?: EvolveMultiCDNEnvResolver;
82
+ /**
83
+ * The regexp patterns to filter dependencies(will be verified) from package.json
84
+ * @default {}
85
+ */
86
+ needVerifyPackages?: false | VerifyPackagePattern;
87
+ /**
88
+ * Detect locally installed dependencies that have correctly installed from `package.json`
89
+ */
90
+ packageInstallChecker?: false | PackageInstallChecker;
91
+ /**
92
+ * All webpack entries configuration
93
+ */
94
+ entryMap: EvolveEntryMap;
95
+ /**
96
+ * Visualize size of webpack output files with an interactive zoomable treemap.
97
+ */
98
+ analyzer?: Record<string, unknown>;
99
+ /**
100
+ * Maximum number of process to run at once for production build
101
+ * Exact number or a percent of CPUs available (for example "50%").
102
+ *
103
+ * If undefined, then all build processes will start in parallel.
104
+ * Setting this value to 1 will achieve sequential running.
105
+ * @default `50%`
106
+ */
107
+ maxProcesses?: number | string;
108
+ /**
109
+ * For `production` mode, the value indicates if we interrupt compilation process while received "warnings" while evolve `build`
110
+ * @default false
111
+ */
112
+ rejectWarnings?: boolean;
113
+ /**
114
+ * The faster builds, simplified ci pipeline configurations
115
+ */
116
+ ci?: FlatEvolveCI;
117
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,7 @@
1
+ export interface EvolvePluginOptions {
2
+ /**
3
+ * The DefinePlugin replaces variables in your code with other values or expressions at compile time.
4
+ * @default `__SENTRY_DEBUG__`,`process.env.FLAT_BUILD_DATE`, `process.env.FLAT_COMMIT_HASH`, `process.env.FLAT_BRANCH_NAME`
5
+ */
6
+ definePlugin?: Record<string, unknown>;
7
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,96 @@
1
+ import { type RuleSetRule, type Configuration } from 'webpack';
2
+ import { type WebpackPlugin } from '../create-webpack/types.js';
3
+ import { type TerserMinimizerOptions } from '../minimizer/types.js';
4
+ /**
5
+ * The webpack entry configuration.
6
+ */
7
+ export interface WebpackEntryObject {
8
+ [index: string]: string | [string, ...string[]];
9
+ }
10
+ export interface FlatEvolveWebpackOptions extends Pick<Configuration, 'performance' | 'stats' | 'infrastructureLogging'> {
11
+ /**
12
+ * These options change how modules are resolved.
13
+ */
14
+ resolve?: Configuration['resolve'] & {
15
+ /**
16
+ * Only allow pass `key:value` alias `{'@xxx':'./src/xxx'}`
17
+ * Note: Usually you don't need to specify an alias, the framework will auto support `paths` alias of tsconfig.json
18
+ * less `@import` is also supported via `paths` of tsconfig.json only need to with prefix `~`
19
+ * @example
20
+ * ```less
21
+ * //@import '~@/utils/xxx.less'`
22
+ * //@import url('./child.less');`
23
+ * //@import url('~@/react/less/alias.less');
24
+ * //@import '~@/react/less/alias2.less';
25
+ * //@import '~@/utils/shared.less';
26
+ * ```
27
+ */
28
+ alias?: Record<string, string>;
29
+ };
30
+ /**
31
+ * @default
32
+ * ```json
33
+ * {
34
+ * vue: 'Vue',
35
+ * react: 'React',
36
+ * 'react-dom': 'ReactDOM',
37
+ * }
38
+ * ```
39
+ */
40
+ externals?: Record<string, string>;
41
+ /**
42
+ * output.publicPath defaults to 'auto' with web and web-worker targets
43
+ * @default 'auto'
44
+ */
45
+ publicPath?: string;
46
+ /**
47
+ *
48
+ * Note if we build `node` using webpack, in order to ignore built-in modules like path, fs, etc.
49
+ * maybe we need to use `webpack-node-externals'` to configuration `externals`
50
+ * Now webpack-dev-server have not follow webpack@5 `browserslist` changes
51
+ * Environment to build for. An array of environments to build for all of them when possible.
52
+ * @default ['web', 'es5'],
53
+ */
54
+ target?: string | false | string[];
55
+ /**
56
+ * Minimizer(s) to use for minimizing the output. for `serve` mode, `minimize` always `false`.
57
+ * @default `terser` minimizer has been enabled fro `production`
58
+ */
59
+ minimizer?: false | {
60
+ terserOptions?: TerserMinimizerOptions;
61
+ /**
62
+ * @default false
63
+ */
64
+ imageMin?: boolean;
65
+ };
66
+ /**
67
+ * A developer tool to enhance debugging (false | eval | [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map).
68
+ * https://webpack.js.org/configuration/devtool/
69
+ * Only works on production mode , `source-map` Recommended choice for production builds with high quality SourceMaps.
70
+ * Note: the `sourceMap` only focus on javascript bundle,invalid for other `loaders` e.g. less-loader, css-loader.
71
+ * `hidden-source-map` produces the same sourcemaps as `source-map`, but doesn't include the `sourceMappingURL` comment at the bottom.
72
+ * @default `false`
73
+ */
74
+ sourceMap?: 'hidden-source-map' | 'source-map' | false;
75
+ /**
76
+ * The rule sets loaders config options
77
+ */
78
+ ruleSets?: Array<Omit<RuleSetRule, 'test'> & {
79
+ test?: string | RegExp | ((value: string) => boolean);
80
+ }>;
81
+ /**
82
+ * The plugins config options
83
+ */
84
+ plugins?: WebpackPlugin[];
85
+ /**
86
+ * `contentehash` bundle file name.
87
+ * @default true
88
+ */
89
+ enableBundleHashName?: boolean;
90
+ /**
91
+ * The output directory as absolute path, Note we must keep custom outputDir with prefix `public`
92
+ * e.g. `public/a/b`, `public/c/d`, don't support `a/b`.
93
+ * @default `public`
94
+ */
95
+ outputDir?: string | (() => string | Promise<string>);
96
+ }
@@ -0,0 +1 @@
1
+ export{};
package/index.js CHANGED
@@ -1,4 +1 @@
1
- 'use strict';
2
-
3
- module.exports = require('./cjs/index.js');
4
- module.exports.default = module.exports;
1
+ export * from './dist/index.js';
package/package.json CHANGED
@@ -1,77 +1,134 @@
1
1
  {
2
2
  "name": "@flatjs/evolve",
3
- "version": "1.7.3",
4
- "description": "the webpack based tools `evolve` of @flatjs",
5
- "keywords": [
6
- "shared",
7
- "flatjs",
8
- "common",
9
- "utils"
10
- ],
3
+ "version": "1.8.1-next.100",
11
4
  "license": "MIT",
12
- "author": "tianyingchun",
13
- "sideEffects": false,
14
- "main": "index.js",
15
- "typings": "index.d.ts",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./index.js",
9
+ "types": "./dist/index.d.ts"
10
+ },
11
+ "./package.json": "./package.json"
12
+ },
13
+ "types": "./dist/index.d.ts",
16
14
  "files": [
17
- "cjs/",
15
+ "bin/",
16
+ "dist/",
18
17
  "templates/",
19
18
  "index.js",
20
- "index.d.ts",
21
19
  "README.md",
20
+ "CHANGELOG.md",
22
21
  "package.json"
23
22
  ],
23
+ "scripts": {
24
+ "serve": "yarn ts-node-esm ./tests/dev-server/dev-server.ts",
25
+ "build": "rimraf dist && tsc -p ./tsconfig.build.json && npm run minify",
26
+ "?build-release": "When https://github.com/atlassian/changesets/issues/432 has a solution we can remove this trick",
27
+ "build-release": "yarn build && rimraf ./_release && yarn pack && mkdir ./_release && tar zxvf ./package.tgz --directory ./_release && rm ./package.tgz",
28
+ "minify": "node ../../scripts/minify.mjs --dest=dist",
29
+ "codegen": "graphql-codegen --config ./codegen.cjs",
30
+ "clean": "rimraf --no-glob ./dist ./coverage ./__data__ ./config/__data__ ./_release ./tsconfig.tsbuildinfo",
31
+ "lint": "eslint . --ext .ts,.mts,.tsx,.js,.jsx,.cjs,.mjs --cache --cache-location ../../.cache/eslint/evolve.eslintcache",
32
+ "test": "run-s test-unit",
33
+ "test-task": "vitest run",
34
+ "test-unit": "vitest run --passWithNoTests",
35
+ "test-watch": "vitest watch --ui",
36
+ "fix-all-files": "eslint . --ext .ts,.tsx,.js,.jsx,.cjs,.mjs,.mdx,.graphql --fix",
37
+ "typecheck": "tsc --project ./tsconfig.json --noEmit"
38
+ },
24
39
  "dependencies": {
25
- "@babel/core": "^7.22.1",
26
- "@flatjs/common": "^1.7.3",
27
- "@flatjs/evolve-preset-babel": "^1.7.3",
28
- "@flatjs/forge-plugin-postcss-pixel": "^1.7.2",
29
- "@flatjs/mock": "^1.7.3",
30
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
31
- "babel-loader": "^9.1.2",
32
- "babel-merge": "^3.0.0",
33
- "babel-plugin-import": "^1.13.6",
34
- "better-opn": "^3.0.2",
35
- "case-sensitive-paths-webpack-plugin": "^2.4.0",
36
- "chalk": "^4.1.2",
37
- "css-loader": "^6.8.1",
38
- "cssnano": "^6.0.1",
39
- "cssnano-preset-default": "^6.0.1",
40
- "fork-ts-checker-webpack-plugin": "^8.0.0",
41
- "html-webpack-plugin": "^5.5.1",
42
- "image-minimizer-webpack-plugin": "^3.8.2",
43
- "imagemin": "^8.0.1",
44
- "less": "^4.1.3",
45
- "less-loader": "^11.1.1",
46
- "lodash": "^4.17.21",
47
- "mini-css-extract-plugin": "^2.7.6",
48
- "postcss": "^8.4.24",
49
- "postcss-loader": "^7.3.2",
50
- "react-refresh": "^0.14.0",
51
- "svgo": "^3.0.2",
52
- "terser-webpack-plugin": "^5.3.9",
53
- "webpack": "^5.84.1",
54
- "webpack-bundle-analyzer": "^4.8.0",
55
- "webpack-dev-server": "4.15.0",
56
- "webpack-sources": "^3.2.3"
40
+ "@armit/config-loader": "^0.0.51",
41
+ "@armit/file-utility": "^0.0.28",
42
+ "@armit/git": "^0.0.36",
43
+ "@armit/package": "^0.0.45",
44
+ "@armit/worker-threads": "^0.0.5",
45
+ "@babel/core": "7.22.9",
46
+ "@flatjs/common": "1.8.1-next.35",
47
+ "@flatjs/evolve-preset-babel": "1.8.1-next.18",
48
+ "@flatjs/forge-postcss-plugin-pixel": "1.8.1-next.35",
49
+ "@flatjs/graph": "1.8.1-next.51",
50
+ "@flatjs/mock": "1.8.1-next.75",
51
+ "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
52
+ "@types/babel__core": "7.20.1",
53
+ "babel-loader": "9.1.3",
54
+ "babel-merge": "3.0.0",
55
+ "babel-plugin-import": "1.13.8",
56
+ "better-opn": "3.0.2",
57
+ "case-sensitive-paths-webpack-plugin": "2.4.0",
58
+ "css-loader": "6.8.1",
59
+ "cssnano": "6.0.1",
60
+ "express": "4.18.2",
61
+ "fork-ts-checker-webpack-plugin": "8.0.0",
62
+ "happy-dom": "10.6.3",
63
+ "html-webpack-plugin": "5.5.3",
64
+ "image-minimizer-webpack-plugin": "3.8.3",
65
+ "less": "4.1.3",
66
+ "less-loader": "11.1.3",
67
+ "listr": "0.14.3",
68
+ "lodash": "4.17.21",
69
+ "mini-css-extract-plugin": "2.7.6",
70
+ "postcss": "8.4.27",
71
+ "postcss-loader": "7.3.3",
72
+ "react-refresh": "0.14.0",
73
+ "svgo": "3.0.2",
74
+ "tarjan-graph": "3.0.0",
75
+ "terser-webpack-plugin": "5.3.9",
76
+ "tsconfig-paths-webpack-plugin": "4.1.0",
77
+ "type-fest": "^4.1.0",
78
+ "webpack": "5.88.2",
79
+ "webpack-bundle-analyzer": "4.9.0",
80
+ "webpack-dev-server": "4.15.1",
81
+ "webpack-sources": "3.2.3"
57
82
  },
58
83
  "devDependencies": {
59
- "@types/cssnano": "^5.0.0",
60
- "@types/lodash": "^4.14.195",
61
- "@types/webpack-sources": "^3.2.0",
62
- "express": "^4.18.2",
63
- "imagemin-gifsicle": "^7.0.0",
64
- "imagemin-jpegtran": "^7.0.0",
65
- "imagemin-pngquant": "^9.0.2",
66
- "imagemin-svgo": "^10.0.1",
67
- "sharp": "^0.32.1",
68
- "type-fest": "^3.11.0"
84
+ "@armit/eslint-config-bases": "^0.0.23",
85
+ "@flatjs/testing": "1.8.1-next.37",
86
+ "@swc/core": "1.3.74",
87
+ "@types/express": "4.17.17",
88
+ "@types/listr": "0.14.4",
89
+ "@types/node": "20.4.6",
90
+ "@vitest/coverage-istanbul": "0.34.1",
91
+ "@vitest/ui": "0.34.1",
92
+ "eslint": "8.46.0",
93
+ "imagemin-gifsicle": "7.0.0",
94
+ "imagemin-jpegtran": "7.0.0",
95
+ "imagemin-pngquant": "9.0.2",
96
+ "imagemin-svgo": "10.0.1",
97
+ "npm-run-all": "4.1.5",
98
+ "prettier": "3.0.0",
99
+ "react": "18.2.0",
100
+ "rimraf": "5.0.1",
101
+ "swc-unplugin-ts": "1.0.2",
102
+ "ts-node": "10.9.1",
103
+ "vite-tsconfig-paths": "4.2.0",
104
+ "vitest": "0.34.1",
105
+ "vue-loader": "17.2.2"
106
+ },
107
+ "peerDependencies": {
108
+ "imagemin-gifsicle": ">=7.0.0",
109
+ "imagemin-jpegtran": ">=7.0.0",
110
+ "imagemin-pngquant": ">=9.0.2",
111
+ "imagemin-svgo": ">=10.0.1"
112
+ },
113
+ "peerDependenciesMeta": {
114
+ "imagemin-gifsicle": {
115
+ "optional": true
116
+ },
117
+ "imagemin-jpegtran": {
118
+ "optional": true
119
+ },
120
+ "imagemin-pngquant": {
121
+ "optional": true
122
+ },
123
+ "imagemin-svgo": {
124
+ "optional": true
125
+ }
69
126
  },
70
127
  "engines": {
71
- "node": ">=16.0.0"
128
+ "node": ">=18.0.0"
72
129
  },
73
130
  "publishConfig": {
74
- "access": "public"
75
- },
76
- "gitHead": "07fcfa73a67cf339bb744619d9d8f40022d5bee8"
77
- }
131
+ "access": "public",
132
+ "directory": "_release/package"
133
+ }
134
+ }
@@ -16,65 +16,42 @@
16
16
  content="width=device-width,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, viewport-fit=cover"
17
17
  />
18
18
  <title><%= title %></title>
19
- <!-- / -->
20
- <% if (inlineScripts) { %>
21
- <!-- / -->
19
+
20
+ <% if (headBeforeHtmlTags) { %> <% for (let index = 0; index <
21
+ headBeforeHtmlTags.length; index++) { %> <%= headBeforeHtmlTags[index] %> <%
22
+ } %> <% } %> <% if (inlineScripts) { %>
22
23
  <script>
23
24
  <% for (let index = 0; index < inlineScripts.length; index++) { %>
24
- <%= inlineScripts[index]%>
25
+ <%= inlineScripts[index] %>
25
26
  <% } %>
26
27
  </script>
27
- <!-- / -->
28
- <% } %>
29
- <!-- / -->
30
-
31
- <% if (viewport) { %>
32
- <!-- / -->
28
+ <% } %> <% if (viewport) { %>
33
29
  <script>
34
30
  <%= viewport %>
35
31
  </script>
36
- <!-- / -->
37
- <% } %>
38
-
39
- <!-- / -->
40
- <% if (favicon) { %>
41
- <!-- / -->
32
+ <% } %> <% if (favicon) { %>
42
33
  <link rel="shortcut icon" href="<%= favicon %>" type="image/x-icon" />
43
34
  <link rel="icon" href="<%= favicon %>" type="image/x-icon" />
44
- <!-- / -->
45
- <% } %>
46
-
47
- <!-- / -->
48
- <% if (headBeforeStyles) { %>
49
- <!-- / -->
50
- <% for (let index = 0; index < headBeforeStyles.length; index++) { %>
35
+ <% } %> <% if (headBeforeStyles) { %> <% for (let index = 0; index <
36
+ headBeforeStyles.length; index++) { %>
51
37
  <link href="<%= headBeforeStyles[index] %>" rel="stylesheet" />
52
- <% } %>
53
- <!-- / -->
54
- <% } %>
55
- <!-- / -->
56
-
57
- <!-- / -->
58
- <% if (headBeforeScripts) { %>
59
- <!-- / -->
60
- <% for (let index = 0; index < headBeforeScripts.length; index++) { %>
61
- <script crossorigin="anonymous" src="<%= headBeforeScripts[index]%>"></script>
62
- <% } %>
63
- <!-- / -->
64
- <% } %>
65
- <!-- / -->
38
+ <% } %> <% } %> <% if (headBeforeScripts) { %> <% for (let index = 0; index
39
+ < headBeforeScripts.length; index++) { %>
40
+ <script
41
+ crossorigin="anonymous"
42
+ src="<%= headBeforeScripts[index]%>"
43
+ ></script>
44
+ <% } %> <% } %>
66
45
  </head>
67
46
 
68
47
  <body>
69
48
  <div id="app"></div>
70
- <!-- / -->
71
- <% if (bodyAfterScripts) { %>
72
- <!-- / -->
73
- <% for (let index = 0; index < bodyAfterScripts.length; index++) { %>
74
- <script crossorigin="anonymous" src="<%= bodyAfterScripts[index]%>"></script>
75
- <% } %>
76
- <!-- / -->
77
- <% } %>
78
- <!-- / -->
49
+ <% if (bodyAfterScripts) { %> <% for (let index = 0; index <
50
+ bodyAfterScripts.length; index++) { %>
51
+ <script
52
+ crossorigin="anonymous"
53
+ src="<%= bodyAfterScripts[index]%>"
54
+ ></script>
55
+ <% } %> <% } %>
79
56
  </body>
80
57
  </html>