@flatjs/evolve 2.3.2-next.1 → 2.3.2-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-server/compiler-server-manager.d.ts +1 -1
- package/dist/compiler/create-build-server-compiler.js +1 -1
- package/dist/constants.d.ts +7 -0
- package/dist/constants.js +1 -1
- package/dist/core/rspack/create-externals.d.ts +4 -0
- package/dist/core/rspack/create-optimization.d.ts +4 -0
- package/dist/core/rspack/create-optimization.js +1 -0
- package/dist/core/rspack/create-performance.d.ts +2 -0
- package/dist/core/rspack/create-plugins.d.ts +5 -0
- package/dist/core/rspack/create-plugins.js +1 -0
- package/dist/core/rspack/create-resolve.d.ts +2 -0
- package/dist/core/rspack/create-resolve.js +1 -0
- package/dist/core/rspack/create-rspack-output.d.ts +4 -0
- package/dist/core/rspack/create-rspack-output.js +1 -0
- package/dist/core/rspack/create-rspack-rule-sets.d.ts +4 -0
- package/dist/core/rspack/create-rspack-rule-sets.js +1 -0
- package/dist/core/rspack/dev-serve/add-rspack-compiler-to-dev-server.d.ts +11 -0
- package/dist/core/rspack/dev-serve/add-rspack-compiler-to-dev-server.js +1 -0
- package/dist/core/rspack/dev-serve/create-rspack-compiler-task.d.ts +3 -0
- package/dist/core/rspack/dev-serve/create-rspack-compiler-task.js +1 -0
- package/dist/core/rspack/load-rspack-config.d.ts +11 -0
- package/dist/core/rspack/load-rspack-config.js +1 -0
- package/dist/core/rspack/load-rspack-watch-options.d.ts +12 -0
- package/dist/core/rspack/load-rspack-watch-options.js +1 -0
- package/dist/core/rspack/start-rspack-build.d.ts +12 -0
- package/dist/core/rspack/start-rspack-build.js +1 -0
- package/dist/{create-webpack → core/webpack}/create-externals.d.ts +2 -2
- package/dist/core/webpack/create-externals.js +1 -0
- package/dist/{create-webpack → core/webpack}/create-optimization.d.ts +2 -2
- package/dist/core/webpack/create-optimization.js +1 -0
- package/dist/{create-webpack → core/webpack}/create-output.d.ts +2 -2
- package/dist/core/webpack/create-output.js +1 -0
- package/dist/{create-webpack → core/webpack}/create-performance.d.ts +1 -1
- package/dist/core/webpack/create-performance.js +1 -0
- package/dist/core/webpack/create-plugins.d.ts +5 -0
- package/dist/core/webpack/create-plugins.js +1 -0
- package/dist/{create-webpack → core/webpack}/create-resolve.d.ts +1 -1
- package/dist/{create-webpack → core/webpack}/create-rule-sets.d.ts +2 -2
- package/dist/core/webpack/create-rule-sets.js +1 -0
- package/dist/{dev-server/add-compiler-to-dev-server.d.ts → core/webpack/dev-serve/add-webpack-compiler-to-dev-server.d.ts} +2 -2
- package/dist/core/webpack/dev-serve/add-webpack-compiler-to-dev-server.js +1 -0
- package/dist/core/webpack/dev-serve/create-webpack-compiler-task.d.ts +3 -0
- package/dist/core/webpack/dev-serve/create-webpack-compiler-task.js +1 -0
- package/dist/core/webpack/index.d.ts +2 -0
- package/dist/core/webpack/index.js +1 -0
- package/dist/{create-webpack → core/webpack}/load-watch-options.d.ts +3 -3
- package/dist/core/webpack/load-watch-options.js +1 -0
- package/dist/{create-webpack → core/webpack}/load-webpack-config.d.ts +3 -3
- package/dist/core/webpack/load-webpack-config.js +1 -0
- package/dist/core/webpack/start-webpack-build.d.ts +12 -0
- package/dist/core/webpack/start-webpack-build.js +1 -0
- package/dist/default-options.js +1 -1
- package/dist/dev-server/create-app-page-route.d.ts +1 -1
- package/dist/dev-server/create-dev-server-entries.d.ts +1 -1
- package/dist/dev-server/index.d.ts +0 -2
- package/dist/dev-server/index.js +1 -1
- package/dist/dev-server/middlewares/create-page-middleware.d.ts +1 -1
- package/dist/dev-server/middlewares/get-all-sorted-modules.d.ts +1 -1
- package/dist/dev-server/middlewares/get-dev-server-host-uri.d.ts +1 -1
- package/dist/dev-server/middlewares/get-hmr-runtime-chunks.d.ts +1 -1
- package/dist/dev-server/middlewares/get-normalized-entry-name.d.ts +1 -1
- package/dist/dev-server/middlewares/get-page-main-html.d.ts +1 -1
- package/dist/dev-server/middlewares/get-page-module-html.d.ts +1 -1
- package/dist/dev-server/middlewares/get-runtime-manifest.d.ts +1 -1
- package/dist/helpers/assert-single-compiler.d.ts +14 -1
- package/dist/helpers/assert-single-compiler.js +1 -1
- package/dist/helpers/custom-listr-renderer.js +1 -1
- package/dist/helpers/flat-entry-map.d.ts +1 -1
- package/dist/helpers/format-spinner-text.d.ts +3 -1
- package/dist/helpers/format-spinner-text.js +1 -1
- package/dist/helpers/print-promotion.d.ts +2 -0
- package/dist/helpers/print-promotion.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/main/create-build-server.d.ts +1 -1
- package/dist/main/create-thread-worker.d.ts +1 -1
- package/dist/main/index.d.ts +0 -1
- package/dist/main/index.js +1 -1
- package/dist/main/prepare-build.d.ts +1 -1
- package/dist/main/prepare-build.js +1 -1
- package/dist/main/prepare-serve.d.ts +2 -1
- package/dist/main/prepare-serve.js +1 -1
- package/dist/main/start-build-dynamic.d.ts +5 -3
- package/dist/main/start-build-dynamic.js +1 -1
- package/dist/main/start-build-worker.d.ts +1 -3
- package/dist/main/start-build-worker.js +1 -1
- package/dist/main/start-build.d.ts +1 -1
- package/dist/main/start-build.js +1 -1
- package/dist/main/start-serve.d.ts +2 -1
- package/dist/main/start-serve.js +1 -1
- package/dist/minimizer/default-options.d.ts +2 -0
- package/dist/minimizer/default-options.js +1 -1
- package/dist/minimizer/index.d.ts +2 -1
- package/dist/minimizer/index.js +1 -1
- package/dist/minimizer/rspack/create-minimizers.d.ts +3 -0
- package/dist/minimizer/rspack/create-minimizers.js +1 -0
- package/dist/minimizer/{image-minimizer.d.ts → rspack/image-minimizer.d.ts} +1 -1
- package/dist/minimizer/rspack/image-minimizer.js +1 -0
- package/dist/minimizer/rspack/terser-minimizer.d.ts +6 -0
- package/dist/minimizer/rspack/terser-minimizer.js +1 -0
- package/dist/minimizer/webpack/create-minimizers.d.ts +3 -0
- package/dist/minimizer/webpack/create-minimizers.js +1 -0
- package/dist/minimizer/webpack/image-minimizer.d.ts +16 -0
- package/dist/minimizer/webpack/image-minimizer.js +1 -0
- package/dist/minimizer/webpack/terser-minimizer.d.ts +6 -0
- package/dist/minimizer/{terser-minimizer.js → webpack/terser-minimizer.js} +1 -1
- package/dist/plugins/{define-variable/define-variable-plugin.d.ts → rspack/define-variable/index.d.ts} +3 -3
- package/dist/plugins/rspack/define-variable/index.js +1 -0
- package/dist/plugins/rspack/module-federation/external-template-remotes-rspack-plugin.d.ts +4 -0
- package/dist/plugins/rspack/module-federation/external-template-remotes-rspack-plugin.js +1 -0
- package/dist/plugins/rspack/module-federation/index.d.ts +4 -0
- package/dist/plugins/rspack/module-federation/index.js +1 -0
- package/dist/plugins/rspack/multi-html/index.d.ts +4 -0
- package/dist/plugins/rspack/multi-html/index.js +1 -0
- package/dist/plugins/rspack/multi-html/multi-html-cdn-rspack-plugin.d.ts +18 -0
- package/dist/plugins/rspack/multi-html/multi-html-cdn-rspack-plugin.js +1 -0
- package/dist/plugins/{multi-html/multi-html-modify-plugin.d.ts → rspack/multi-html/multi-html-modify--rspack-plugin.d.ts} +2 -2
- package/dist/plugins/rspack/multi-html/multi-html-modify--rspack-plugin.js +1 -0
- package/dist/plugins/rspack/multi-html/multi-html-rspack-plugin.d.ts +11 -0
- package/dist/plugins/rspack/multi-html/multi-html-rspack-plugin.js +1 -0
- package/dist/plugins/rspack/progress-plugin/index.d.ts +4 -0
- package/dist/plugins/rspack/progress-plugin/index.js +1 -0
- package/dist/plugins/rspack/progress-plugin/progress-handler.d.ts +3 -0
- package/dist/plugins/rspack/progress-plugin/progress-handler.js +1 -0
- package/dist/plugins/rspack/progress-plugin/progress-worker.d.ts +7 -0
- package/dist/plugins/rspack/progress-plugin/progress-worker.js +1 -0
- package/dist/plugins/{circular-dependency/circular-dependency-plugin.d.ts → webpack/circular-dependency/circular-dependency-webpack-plugin.d.ts} +1 -1
- package/dist/plugins/webpack/circular-dependency/circular-dependency-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/circular-dependency/index.d.ts +9 -0
- package/dist/plugins/webpack/circular-dependency/index.js +1 -0
- package/dist/plugins/webpack/clean-webpack/clean-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/clean-webpack/index.d.ts +9 -0
- package/dist/plugins/webpack/clean-webpack/index.js +1 -0
- package/dist/plugins/webpack/define-variable/index.d.ts +16 -0
- package/dist/plugins/webpack/define-variable/index.js +1 -0
- package/dist/plugins/{html-inject-scripts/plugin-html-inject-script.d.ts → webpack/html-inject-scripts/html-inject-script-webpack-plugin.d.ts} +1 -1
- package/dist/plugins/webpack/html-inject-scripts/html-inject-script-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/html-inject-scripts/html-inline-script-webpack-plugin.d.ts +12 -0
- package/dist/plugins/webpack/html-inject-scripts/html-inline-script-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/html-inject-scripts/index.d.ts +2 -0
- package/dist/plugins/webpack/html-inject-scripts/index.js +1 -0
- package/dist/plugins/{module-federation/external-template-remotes.d.ts → webpack/module-federation/external-template-remotes-webpack-plugin.d.ts} +1 -1
- package/dist/plugins/webpack/module-federation/external-template-remotes-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/module-federation/index.d.ts +4 -0
- package/dist/plugins/webpack/module-federation/index.js +1 -0
- package/dist/plugins/webpack/multi-html/index.d.ts +4 -0
- package/dist/plugins/webpack/multi-html/index.js +1 -0
- package/dist/plugins/{multi-html/multi-html-cdn-plugin.d.ts → webpack/multi-html/multi-html-cdn-webpack-plugin.d.ts} +2 -2
- package/dist/plugins/webpack/multi-html/multi-html-cdn-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/multi-html/multi-html-modify-webpack-plugin.d.ts +12 -0
- package/dist/plugins/webpack/multi-html/multi-html-modify-webpack-plugin.js +1 -0
- package/dist/plugins/webpack/multi-html/multi-html-webpack-plugins.d.ts +11 -0
- package/dist/plugins/webpack/multi-html/multi-html-webpack-plugins.js +1 -0
- package/dist/plugins/webpack/stats-webpack/index.d.ts +12 -0
- package/dist/plugins/webpack/stats-webpack/index.js +1 -0
- package/dist/plugins/webpack/stats-webpack/stats-webpack-plugin.js +1 -0
- package/dist/rules/index.d.ts +2 -0
- package/dist/rules/index.js +1 -0
- package/dist/rules/rspack/index.d.ts +5 -0
- package/dist/rules/rspack/index.js +1 -0
- package/dist/rules/rspack/rule-assets.d.ts +10 -0
- package/dist/rules/rspack/rule-assets.js +1 -0
- package/dist/rules/rspack/rule-css.d.ts +11 -0
- package/dist/rules/rspack/rule-css.js +1 -0
- package/dist/rules/rspack/rule-less.d.ts +26 -0
- package/dist/rules/rspack/rule-less.js +1 -0
- package/dist/rules/rspack/rule-scripts.d.ts +3 -0
- package/dist/rules/rspack/rule-scripts.js +1 -0
- package/dist/rules/rspack/rule-svg-icon.d.ts +6 -0
- package/dist/rules/rspack/rule-svg-icon.js +1 -0
- package/dist/rules/rule-utils.d.ts +19 -0
- package/dist/rules/rule-utils.js +1 -0
- package/dist/rules/wepack/index.d.ts +5 -0
- package/dist/rules/wepack/index.js +1 -0
- package/dist/{create-webpack/rule-sets → rules/wepack}/rule-assets.d.ts +1 -1
- package/dist/rules/wepack/rule-assets.js +1 -0
- package/dist/{create-webpack/rule-sets → rules/wepack}/rule-css.d.ts +1 -1
- package/dist/rules/wepack/rule-css.js +1 -0
- package/dist/{create-webpack/rule-sets → rules/wepack}/rule-less.d.ts +1 -1
- package/dist/rules/wepack/rule-less.js +1 -0
- package/dist/{create-webpack/rule-sets → rules/wepack}/rule-scripts.d.ts +1 -1
- package/dist/rules/wepack/rule-scripts.js +1 -0
- package/dist/{create-webpack/rule-sets → rules/wepack}/rule-svg-icon.d.ts +1 -1
- package/dist/rules/wepack/rule-svg-icon.js +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +1 -1
- package/dist/types/types-build.d.ts +4 -0
- package/dist/types/types-cli-options.d.ts +5 -0
- package/dist/types/types-dev-server.d.ts +23 -0
- package/dist/types/types-options.d.ts +5 -0
- package/dist/types/types-webpack.d.ts +42 -3
- package/package.json +21 -9
- package/dist/create-webpack/create-optimization.js +0 -1
- package/dist/create-webpack/create-output.js +0 -1
- package/dist/create-webpack/create-plugins.d.ts +0 -5
- package/dist/create-webpack/create-plugins.js +0 -1
- package/dist/create-webpack/create-rule-sets.js +0 -1
- package/dist/create-webpack/load-watch-options.js +0 -1
- package/dist/create-webpack/load-webpack-config.js +0 -1
- package/dist/create-webpack/rule-sets/rule-assets.js +0 -1
- package/dist/create-webpack/rule-sets/rule-css.js +0 -1
- package/dist/create-webpack/rule-sets/rule-less.js +0 -1
- package/dist/create-webpack/rule-sets/rule-scripts.js +0 -1
- package/dist/create-webpack/rule-sets/rule-svg-icon.js +0 -1
- package/dist/create-webpack/rule-sets/rule-utils.d.ts +0 -7
- package/dist/create-webpack/rule-sets/rule-utils.js +0 -1
- package/dist/create-webpack/types.d.ts +0 -2
- package/dist/dev-server/add-compiler-to-dev-server.js +0 -1
- package/dist/dev-server/create-dev-server-compiler-task.d.ts +0 -3
- package/dist/dev-server/create-dev-server-compiler-task.js +0 -1
- package/dist/dev-server/middlewares/types.d.ts +0 -24
- package/dist/dev-server/middlewares/types.js +0 -1
- package/dist/main/start-group-entry-build.d.ts +0 -15
- package/dist/main/start-group-entry-build.js +0 -1
- package/dist/minimizer/create-minimizers.d.ts +0 -3
- package/dist/minimizer/create-minimizers.js +0 -1
- package/dist/minimizer/image-minimizer.js +0 -1
- package/dist/minimizer/terser-minimizer.d.ts +0 -6
- package/dist/plugins/circular-dependency/circular-dependency-plugin.js +0 -1
- package/dist/plugins/circular-dependency/index.d.ts +0 -7
- package/dist/plugins/circular-dependency/index.js +0 -1
- package/dist/plugins/clean-webpack/clean-webpack-plugin.js +0 -1
- package/dist/plugins/clean-webpack/index.d.ts +0 -9
- package/dist/plugins/clean-webpack/index.js +0 -1
- package/dist/plugins/define-variable/define-variable-plugin.js +0 -1
- package/dist/plugins/define-variable/index.d.ts +0 -1
- package/dist/plugins/define-variable/index.js +0 -1
- package/dist/plugins/html-inject-scripts/plugin-html-inject-script.js +0 -1
- package/dist/plugins/module-federation/external-template-remotes.js +0 -1
- package/dist/plugins/module-federation/index.d.ts +0 -1
- package/dist/plugins/module-federation/index.js +0 -1
- package/dist/plugins/module-federation/module-federation.d.ts +0 -4
- package/dist/plugins/module-federation/module-federation.js +0 -1
- package/dist/plugins/multi-html/index.d.ts +0 -4
- package/dist/plugins/multi-html/index.js +0 -1
- package/dist/plugins/multi-html/multi-html-cdn-plugin.js +0 -1
- package/dist/plugins/multi-html/multi-html-modify-plugin.js +0 -1
- package/dist/plugins/multi-html/multi-html-plugin.d.ts +0 -11
- package/dist/plugins/multi-html/multi-html-plugin.js +0 -1
- package/dist/plugins/stats-webpack/index.d.ts +0 -12
- package/dist/plugins/stats-webpack/index.js +0 -1
- package/dist/plugins/stats-webpack/stats-webpack-plugin.js +0 -1
- /package/dist/{create-webpack → core/rspack}/create-externals.js +0 -0
- /package/dist/{create-webpack → core/rspack}/create-performance.js +0 -0
- /package/dist/{create-webpack → core/webpack}/create-resolve.js +0 -0
- /package/dist/{create-webpack → helpers}/resolve-public-path.d.ts +0 -0
- /package/dist/{create-webpack → helpers}/resolve-public-path.js +0 -0
- /package/dist/plugins/{clean-webpack → webpack/clean-webpack}/clean-webpack-plugin.d.ts +0 -0
- /package/dist/plugins/{stats-webpack → webpack/stats-webpack}/helper-write-stats.d.ts +0 -0
- /package/dist/plugins/{stats-webpack → webpack/stats-webpack}/helper-write-stats.js +0 -0
- /package/dist/plugins/{stats-webpack → webpack/stats-webpack}/stats-webpack-plugin.d.ts +0 -0
- /package/dist/{create-webpack/rule-sets → rules}/constants.d.ts +0 -0
- /package/dist/{create-webpack/rule-sets → rules}/constants.js +0 -0
- /package/dist/{create-webpack/types.js → types/types-build.js} +0 -0
@@ -10,6 +10,6 @@ export declare class BuildServer {
|
|
10
10
|
* @param configLoaderOptions - The config loader options
|
11
11
|
* @returns The build results
|
12
12
|
*/
|
13
|
-
build(projectCwd: string, earlyCommit?: string, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions): Promise<import("
|
13
|
+
build(projectCwd: string, earlyCommit?: string, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions): Promise<import("../index.js").EvolveBuildResult[]>;
|
14
14
|
}
|
15
15
|
export declare const createBuildServer: () => BuildServer;
|
@@ -9,7 +9,7 @@ interface BaseThreadPool {
|
|
9
9
|
* Represents a thread pool for unit testing.
|
10
10
|
*/
|
11
11
|
declare class ThreadPoolForUnittest implements BaseThreadPool {
|
12
|
-
startBuildWorker(options: Parameters<typeof startBuildWorker>[0]): Promise<import("
|
12
|
+
startBuildWorker(options: Parameters<typeof startBuildWorker>[0]): Promise<import("../index.js").EvolveBuildResult>;
|
13
13
|
terminate(): void;
|
14
14
|
}
|
15
15
|
/**
|
package/dist/main/index.d.ts
CHANGED
package/dist/main/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export*from"./create-build-server.js";export*from"./start-build.js";export*from"./start-build-dynamic.js";export*from"./start-
|
1
|
+
export*from"./create-build-server.js";export*from"./start-build.js";export*from"./start-build-dynamic.js";export*from"./start-serve.js";export*from"./start-static.js";
|
@@ -1,7 +1,7 @@
|
|
1
|
+
import type { EvolveBuildResult } from '../types/types-build.js';
|
1
2
|
import type { FlatCliOptions } from '../types/types-cli-options.js';
|
2
3
|
import { type EvolveEntryMap } from '../types/types-entry-map.js';
|
3
4
|
import { type FlatEvolveOptions } from '../types/types-options.js';
|
4
|
-
import { type EvolveBuildResult } from './start-group-entry-build.js';
|
5
5
|
/**
|
6
6
|
* The main entry to start an evolve `build`
|
7
7
|
* @param entryMapItem The `entryMapItem` for one entry build task
|
@@ -1 +1 @@
|
|
1
|
-
import{ensureSlash,mergeOptions}from"@flatjs/common";import{ignoreEntryOptionKeys}from"../constants.js";import{EvolveBuildError}from"../errors/evolve-build-error.js";import{printCompilerError}from"../helpers/print-log.js";import{verifyGroupEntryOptions}from"../helpers/verify-group-entry-options.js";
|
1
|
+
import{ensureSlash,mergeOptions}from"@flatjs/common";import{ignoreEntryOptionKeys}from"../constants.js";import{startRspackBuild}from"../core/rspack/start-rspack-build.js";import{startWebpackBuild}from"../core/webpack/index.js";import{EvolveBuildError}from"../errors/evolve-build-error.js";import{printCompilerError}from"../helpers/print-log.js";import{verifyGroupEntryOptions}from"../helpers/verify-group-entry-options.js";export const prepareBuild=async(r,o,t)=>{const{compilerType:e="webpack"}=t||{},p=Object.values(r)[0];if(!verifyGroupEntryOptions(r,ignoreEntryOptionKeys,!0))throw new Error("The entry options in a group must be the same.");const s=o.multiHtmlCdn?.prod||[];if(!s.length)throw new Error(`No CDN config for env:"prod", groupName: ${p.groupName}`);const i=ensureSlash(s[Math.floor(Math.random()*s.length)],!0);try{const s=p.options?.useRelativeAssetPath,n=mergeOptions(o,{webpack:{publicPath:s?"auto":i}});return"webpack"===e?await startWebpackBuild(r,n,t):await startRspackBuild(r,n,t)}catch(r){const o=printCompilerError(r);throw new EvolveBuildError("BUILD_ERROR",o)}};
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { FlatCliOptions } from '../types/types-cli-options.js';
|
1
2
|
import { type EvolveEntryMap } from '../types/types-entry-map.js';
|
2
3
|
import { type FlatEvolveOptions } from '../types/types-options.js';
|
3
4
|
/**
|
@@ -6,4 +7,4 @@ import { type FlatEvolveOptions } from '../types/types-options.js';
|
|
6
7
|
* @param servedEntries All normalized webpack entries we have served.
|
7
8
|
* @param evolveOptions FlatEvolveOptions
|
8
9
|
*/
|
9
|
-
export declare const prepareServe: (projectCwd: string, servedEntries: EvolveEntryMap, evolveOptions: FlatEvolveOptions) => Promise<import("express-serve-static-core").Express | undefined>;
|
10
|
+
export declare const prepareServe: (projectCwd: string, servedEntries: EvolveEntryMap, evolveOptions: FlatEvolveOptions, cliOptions?: FlatCliOptions) => Promise<import("express-serve-static-core").Express | undefined>;
|
@@ -1 +1 @@
|
|
1
|
-
import{arrayUnique,chalk,logger,urlJoin}from"@flatjs/common";import{attachMockMiddlewares}from"@flatjs/mock";import{ignoreEntryOptionKeys,moduleName}from"../constants.js";import{createAppPageRoute,createDevServer,
|
1
|
+
import{arrayUnique,chalk,logger,urlJoin}from"@flatjs/common";import{attachMockMiddlewares}from"@flatjs/mock";import{ignoreEntryOptionKeys,moduleName}from"../constants.js";import{createRspackCompilerTask}from"../core/rspack/dev-serve/create-rspack-compiler-task.js";import{createWebpackCompilerTask}from"../core/webpack/dev-serve/create-webpack-compiler-task.js";import{createAppPageRoute,createDevServer,createDevServerEntries}from"../dev-server/index.js";import{flatEntryMap,openPage}from"../helpers/index.js";import{normalizePageProxy}from"../helpers/normalize-page-proxy.js";import{splitToEntryGroup}from"../helpers/split-to-entry-group.js";import{verifyGroupEntryOptions}from"../helpers/verify-group-entry-options.js";import{envVerify}from"./env-verify.js";export const prepareServe=async(e,r,o,t={})=>{const{compilerType:a="webpack"}=t;await envVerify(e,o);const s=splitToEntryGroup(r,o,ignoreEntryOptionKeys,!0);if(!s.length)return void logger.warn("No served entries provided!");const p=[],{app:n,devPort:i,devHostUri:c,publicIp:m}=await createDevServer(o),l=o.devServer?.mockOptions?.mockFilters||[];for(const[,e]of Object.entries(r))l.push(...e.options?.mockFilters||[]);await attachMockMiddlewares(n,{...o.devServer?.mockOptions,mockFilters:arrayUnique(l),projectCwd:e});let v=i;const d=[];for(const e of s){if(!verifyGroupEntryOptions(e,ignoreEntryOptionKeys,!0))throw new Error("The entry options in a group must be the same.");v++;const r=await createDevServerEntries(v,e,o);d.push(r)}const f=flatEntryMap(d);createAppPageRoute(e,n,c,f,o);const y=normalizePageProxy(o.devServer?.pageProxy||"/pages"),g=urlJoin(c,[y]);o.devServer?.autoOpen&&openPage(g);for(const e of d){const r="webpack"===a?createWebpackCompilerTask(m,e,d,o):createRspackCompilerTask(m,e,d,o);p.push(r)}return Promise.all(p).then((()=>(logger.info(`debug page ➩ ${chalk(["cyan"])(g)}`,moduleName),process.stdin.resume(),process.stdin.setEncoding("utf8"),process.stdin.on("data",(e=>{const r=e.toString();12===r.charCodeAt(0)?console.clear():[102,70].includes(r.charCodeAt(0))&&logger.info(`debug page ➩ ${chalk(["cyan"])(g)}`,moduleName)})),n)))};
|
@@ -1,14 +1,16 @@
|
|
1
1
|
import { type PartialDeep } from 'type-fest';
|
2
2
|
import { type ConfigLoaderOptions } from '../load-config/types.js';
|
3
|
+
import type { EvolveBuildResult } from '../types/types-build.js';
|
4
|
+
import type { FlatCliOptions } from '../types/types-cli-options.js';
|
5
|
+
import type { EvolveEntryMap } from '../types/types-entry-map.js';
|
3
6
|
import { type FlatEvolveOptions } from '../types/types-options.js';
|
4
|
-
import { type EvolveBuildResult } from './start-group-entry-build.js';
|
5
7
|
export declare function getBuildEntryFiles(projectCwd: string, diffFiles: string[], allEntryInputs: string[], resolveAlias?: Record<string, string>, graphTreeNodeFilter?: (moduleId: string) => boolean): Promise<string[]>;
|
6
8
|
/**
|
7
9
|
* Dynamic check which entry modules need to build.
|
8
10
|
* @returns
|
9
11
|
*/
|
10
12
|
export declare function dynamicCheckBuildEntryMap(projectCwd: string, earlyCommit?: string | null, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions): Promise<{
|
11
|
-
buildEntries:
|
13
|
+
buildEntries: EvolveEntryMap;
|
12
14
|
newEvolveOptions: FlatEvolveOptions;
|
13
15
|
}>;
|
14
16
|
/**
|
@@ -17,4 +19,4 @@ export declare function dynamicCheckBuildEntryMap(projectCwd: string, earlyCommi
|
|
17
19
|
* @param earlyCommit The diff based earlier commit hash
|
18
20
|
* @param lastCommit If is omitted, it will have the same effect as using HEAD instead.
|
19
21
|
*/
|
20
|
-
export declare const startDynamicBuild: (projectCwd: string, earlyCommit?: string, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions) => Promise<EvolveBuildResult[]>;
|
22
|
+
export declare const startDynamicBuild: (projectCwd: string, earlyCommit?: string, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions, cliOptions?: FlatCliOptions) => Promise<EvolveBuildResult[]>;
|
@@ -1 +1 @@
|
|
1
|
-
import Listr from"listr";import{isAbsolute,join}from"node:path";import{getCommitIdOfBranch,getDiffFiles}from"@armit/git";import{arraysIntersect,chalk,logger,requireResolve}from"@flatjs/common";import{traverseGraph}from"@flatjs/graph";import{createGlobalCompiler}from"../compiler/create-global-compiler.js";import{ignoreEntryOptionKeys,moduleName}from"../constants.js";import{isCI}from"../helpers/check-runtime-env.js";import{CustomListrRenderer}from"../helpers/custom-listr-renderer.js";import{filterActivedEntriesByEntryInputs,filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{
|
1
|
+
import Listr from"listr";import{isAbsolute,join}from"node:path";import{getCommitIdOfBranch,getDiffFiles}from"@armit/git";import{arraysIntersect,chalk,logger,requireResolve}from"@flatjs/common";import{traverseGraph}from"@flatjs/graph";import{createGlobalCompiler}from"../compiler/create-global-compiler.js";import{ignoreEntryOptionKeys,moduleName}from"../constants.js";import{isCI}from"../helpers/check-runtime-env.js";import{CustomListrRenderer}from"../helpers/custom-listr-renderer.js";import{filterActivedEntriesByEntryInputs,filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{getGitRoot}from"../helpers/get-git-root.js";import{getMaxProcessTasks}from"../helpers/get-max-process-tasks.js";import{jsonSerializer}from"../helpers/json-serializer.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{printPromotions}from"../helpers/print-promotion.js";import{resolveEntryMapInputFiles}from"../helpers/resolve-entry-map-input-files.js";import{splitToEntryGroup}from"../helpers/split-to-entry-group.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{createThreadWorker}from"./create-thread-worker.js";import{envVerify}from"./env-verify.js";import startBuildWorker from"./start-build-worker.js";const runWebpackTask=async(e,r,t,o,i,s={})=>{const{threads:n={}}=t,a=getMaxProcessTasks(r.length,n?.maxThreads);logger.info(`Start dynamic build with (${chalk(["magenta"])(String(a))}) workers`);const l=createThreadWorker({...n,maxThreads:a}),p=new Listr([],{concurrent:a,exitOnError:!0,renderer:isCI()?void 0:CustomListrRenderer}),c=[];for(const t of r){const r=Object.values(t)?.[0]?.groupName||"",n=Object.keys(t);let a=`Group ${chalk(["magenta"])(r)} $STATUS $ENTRY_KEYS${n.join(",")}`;isCI()&&(a=`Group ${chalk(["magenta"])(r)} compiling... $ENTRY_KEYS${n.join(",")}`),p.add({title:a,task:async()=>{const t=await l.startBuildWorker({projectCwd:e,entryKeys:n,serializedEvolveOptions:jsonSerializer.stringify(o),configLoaderOptions:i,groupName:r,cliOptions:s});c.push(t)}})}if(p.tasks.length)try{await p.run()}catch(e){throw l.terminate(),e}return l.terminate(),c},runRspackTask=async(e,r,t,o,i={})=>{const s=[];for(const n of r){const r=Object.values(n)?.[0]?.groupName||"",a=Object.keys(n),l=await startBuildWorker({projectCwd:e,entryKeys:a,serializedEvolveOptions:jsonSerializer.stringify(t),configLoaderOptions:o,groupName:r,cliOptions:i});s.push(l)}return s};export async function getBuildEntryFiles(e,r,t,o,i){const s=[],n=[];for(const e of t)r.includes(e)?s.push(e):n.push(e);if(i&&logger.info("Use custom graph traverse filter",moduleName),n.length){const t=await traverseGraph({input:n,projectCwd:e,treeNodeFilter:i||(()=>!0),lessImportOptions:{projectCwd:e,aliases:o}});if(!t)return s;logger.debug(`DependencyGraph:\n${JSON.stringify(t,null,2)}`);for(const e of n){const o=t[e]||[];arraysIntersect(o,r)&&s.push(e)}}return s}export async function dynamicCheckBuildEntryMap(e,r,t,o,i){const s={projectCwd:e,command:"build",resolve:requireResolve},n=await loadEvolveConfig(s,e,o,i);if(n.ci?.fixedBuildModules&&n.ci?.fixedBuildModules.length){logger.info("Use `fixedBuildModules` configuration to build...");return{buildEntries:filterActivedEntriesByModule(n.entryMap,n.ci?.fixedBuildModules),newEvolveOptions:n}}if(logger.info("Dynamicly checking code changed modules ..."),!r){const e=n.ci?.basedBranch||"origin/master";r=await getCommitIdOfBranch(e),logger.info(`Resolving base branch "${e}" commit hash "${r}" ...`)}logger.info(`diffCommits: \n${JSON.stringify({earlyCommit:r,lastCommit:t},null,2)}`,moduleName);let a=r?await getDiffFiles(r,t):[];const l=getGitRoot(e);if(!l)throw new Error(`No .git root (${e}) found`);if(a=a.map((e=>isAbsolute(e)?e:join(l,e))),logger.debug(`Diff files: \n${JSON.stringify(a,null,2)}`),!a.length)return logger.warn("It seems that there are no code files changed."),{buildEntries:{},newEvolveOptions:n};const p=await resolveEntryMapInputFiles(e,n.entryMap),c=await getBuildEntryFiles(e,a,p,n.webpack?.resolve?.alias,n.ci?.graphTreeNodeFilter);logger.debug(`To build entry files: \n${JSON.stringify(c,null,2)}`);return{buildEntries:await filterActivedEntriesByEntryInputs(e,n.entryMap,c),newEvolveOptions:n}}export const startDynamicBuild=async(e,r,t,o={},i,s={})=>{const{compilerType:n="webpack"}=s,{buildEntries:a,newEvolveOptions:l}=await dynamicCheckBuildEntryMap(e,r,t,o,i);printPromotions(s),await envVerify(e,l);const p=normalizeEvolveEntryMap(a,l.entryMap),c=splitToEntryGroup(p,l,ignoreEntryOptionKeys,!1);if(!c.length)return logger.warn("No build entries provided!"),[];await createGlobalCompiler(!1,l);let m=[];return"webpack"===n?m=await runWebpackTask(e,c,l,o,i,s):"rspack"===n&&(m=await runRspackTask(e,c,o,i,s)),m};
|
@@ -1,7 +1,6 @@
|
|
1
|
-
import type { MessageChannel } from 'node:worker_threads';
|
2
1
|
import { type ConfigLoaderOptions } from '../load-config/types.js';
|
2
|
+
import type { EvolveBuildResult } from '../types/types-build.js';
|
3
3
|
import type { FlatCliOptions } from '../types/types-cli-options.js';
|
4
|
-
import { type EvolveBuildResult } from './start-group-entry-build.js';
|
5
4
|
/**
|
6
5
|
* FIXME: The main entry to start an evolve `build`, NOTE: avoid pass configuration with `function` here.
|
7
6
|
* If you need to call build api avoid `worker` you can directly call `prepareBuild`
|
@@ -16,7 +15,6 @@ declare const _default: (options: {
|
|
16
15
|
entryKeys: string[];
|
17
16
|
serializedEvolveOptions: string;
|
18
17
|
configLoaderOptions?: ConfigLoaderOptions;
|
19
|
-
messagePort?: MessageChannel["port1"];
|
20
18
|
groupName?: string;
|
21
19
|
cliOptions?: FlatCliOptions;
|
22
20
|
}) => Promise<EvolveBuildResult>;
|
@@ -1 +1 @@
|
|
1
|
-
import{configLoggerStdWriteSteam,
|
1
|
+
import{configLoggerStdWriteSteam,requireResolve}from"@flatjs/common";import{ignoreEntryOptionKeys}from"../constants.js";import{isCI}from"../helpers/check-runtime-env.js";import{filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{jsonSerializer}from"../helpers/json-serializer.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{splitToEntryGroup}from"../helpers/split-to-entry-group.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{prepareBuild}from"./prepare-build.js";export default async e=>{const{compilerType:r="webpack"}=e.cliOptions||{};isCI()||"webpack"!==r||configLoggerStdWriteSteam();const{projectCwd:o,entryKeys:i,serializedEvolveOptions:t,configLoaderOptions:p,groupName:n="flatjs_evolve_group",cliOptions:s}=e,l={projectCwd:o,command:"build",resolve:requireResolve},a=jsonSerializer.parse(t)||{},m=await loadEvolveConfig(l,o,a,p),c=i.map((e=>new RegExp(`^${e}$`))),f=filterActivedEntriesByModule(m.entryMap,c),d=normalizeEvolveEntryMap(f,m.entryMap),v=splitToEntryGroup(d,m,ignoreEntryOptionKeys,!1)[0];for(const[,e]of Object.entries(v))e.groupName=n;return prepareBuild(v,m,s).then((e=>e))};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { type PartialDeep } from 'type-fest';
|
2
2
|
import { type ConfigLoaderOptions } from '../load-config/types.js';
|
3
|
+
import type { EvolveBuildResult } from '../types/types-build.js';
|
3
4
|
import type { FlatCliOptions } from '../types/types-cli-options.js';
|
4
5
|
import { type FlatEvolveOptions } from '../types/types-options.js';
|
5
|
-
import { type EvolveBuildResult } from './start-group-entry-build.js';
|
6
6
|
export declare const startBuild: (projectCwd: string, buildModules: string[], overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions, cliOptions?: FlatCliOptions) => Promise<EvolveBuildResult[]>;
|
package/dist/main/start-build.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import Listr from"listr";import{chalk,logger,requireResolve}from"@flatjs/common";import{createGlobalCompiler}from"../compiler/create-global-compiler.js";import{ignoreEntryOptionKeys}from"../constants.js";import{isCI}from"../helpers/check-runtime-env.js";import{CustomListrRenderer}from"../helpers/custom-listr-renderer.js";import{filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{
|
1
|
+
import Listr from"listr";import{chalk,logger,requireResolve}from"@flatjs/common";import{createGlobalCompiler}from"../compiler/create-global-compiler.js";import{ignoreEntryOptionKeys}from"../constants.js";import{isCI}from"../helpers/check-runtime-env.js";import{CustomListrRenderer}from"../helpers/custom-listr-renderer.js";import{filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{getMaxProcessTasks}from"../helpers/get-max-process-tasks.js";import{jsonSerializer}from"../helpers/json-serializer.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{printPromotions}from"../helpers/print-promotion.js";import{splitToEntryGroup}from"../helpers/split-to-entry-group.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{createThreadWorker}from"./create-thread-worker.js";import{envVerify}from"./env-verify.js";import{startAnalyzer}from"./start-analyzer.js";import startBuildWorker from"./start-build-worker.js";const runWebpackTask=async(r,e,t,o,s,i={})=>{const{threads:a={}}=t,n=getMaxProcessTasks(e.length,a?.maxThreads);logger.info(`Start standard build with (${chalk(["magenta"])(String(n))}) workers`);const l=createThreadWorker({...a,maxThreads:n}),p=new Listr([],{concurrent:n,exitOnError:!0,renderer:isCI()?void 0:CustomListrRenderer}),c=[];for(const t of e){const e=Object.values(t)?.[0]?.groupName||"",a=Object.keys(t);let n=`Group ${chalk(["magenta"])(e)} $STATUS $ENTRY_KEYS${a.join(",")}`;isCI()&&(n=`Group ${chalk(["magenta"])(e)} compiling... $ENTRY_KEYS${a.join(",")}`),p.add({title:n,task:async()=>{const t=await l.startBuildWorker({projectCwd:r,entryKeys:a,groupName:e,serializedEvolveOptions:jsonSerializer.stringify(o),configLoaderOptions:s,cliOptions:i});c.push(t)}})}if(p.tasks.length)try{await p.run()}catch(r){throw l.terminate(),r}return l.terminate(),c},runRspackTask=async(r,e,t,o,s={})=>{const i=[];for(const a of e){const e=Object.values(a)?.[0]?.groupName||"",n=Object.keys(a),l=await startBuildWorker({projectCwd:r,entryKeys:n,groupName:e,serializedEvolveOptions:jsonSerializer.stringify(t),configLoaderOptions:o,cliOptions:s});i.push(l)}return i};export const startBuild=async(r,e,t={},o,s={})=>{const{analyzer:i=!1,compilerType:a="webpack"}=s,n={projectCwd:r,command:"build",resolve:requireResolve};printPromotions(s);const l=await loadEvolveConfig(n,r,t,o);await envVerify(r,l);const p=filterActivedEntriesByModule(l.entryMap,e),c=normalizeEvolveEntryMap(p,l.entryMap),m=splitToEntryGroup(c,l,ignoreEntryOptionKeys,!1);if(!m.length)return logger.warn("No build entries provided!"),[];await createGlobalCompiler(!1,l);let d=[];return"webpack"===a?d=await runWebpackTask(r,m,l,t,o,s):"rspack"===a&&(d=await runRspackTask(r,m,t,o,s)),i&&startAnalyzer(l),d};
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { type PartialDeep } from 'type-fest';
|
2
2
|
import { type ConfigLoaderOptions } from '../load-config/types.js';
|
3
|
+
import type { FlatCliOptions } from '../types/types-cli-options.js';
|
3
4
|
import { type FlatEvolveOptions } from '../types/types-options.js';
|
4
5
|
/**
|
5
6
|
* The main entry to start evolve serve
|
@@ -8,4 +9,4 @@ import { type FlatEvolveOptions } from '../types/types-options.js';
|
|
8
9
|
* @param overrideEvolveOptions The overrided evolve options
|
9
10
|
* @param configLoaderOptions Evolve config loader options
|
10
11
|
*/
|
11
|
-
export declare const startServe: (projectCwd: string, serveModules: string[], overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions) => Promise<never[] | import("express-serve-static-core").Express | undefined>;
|
12
|
+
export declare const startServe: (projectCwd: string, serveModules: string[], overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions, cliOptions?: FlatCliOptions) => Promise<never[] | import("express-serve-static-core").Express | undefined>;
|
package/dist/main/start-serve.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import{logger,requireResolve}from"@flatjs/common";import{createGlobalCompiler}from"../compiler/create-global-compiler.js";import{filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{prepareServe}from"./prepare-serve.js";export const startServe=async(e,r,o={},t)=>{const l={projectCwd:e,command:"serve",resolve:requireResolve}
|
1
|
+
import{logger,requireResolve}from"@flatjs/common";import{createGlobalCompiler}from"../compiler/create-global-compiler.js";import{filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{printPromotions}from"../helpers/print-promotion.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{prepareServe}from"./prepare-serve.js";export const startServe=async(e,r,o={},t,i={})=>{const l={projectCwd:e,command:"serve",resolve:requireResolve};printPromotions(i);const n=await loadEvolveConfig(l,e,o,t),p=filterActivedEntriesByModule(n.entryMap,r),a=Object.keys(p);if(!a.length)return logger.warn("No served entries providered!"),[];logger.info({servedEntries:a});const s=normalizeEvolveEntryMap(p,n.entryMap);return await createGlobalCompiler(!0,n),prepareServe(e,s,n,i)};
|
@@ -1,2 +1,4 @@
|
|
1
|
+
import type { SwcJsMinimizerRspackPluginOptions } from '@rspack/core';
|
1
2
|
import { type TerserMinimizerOptions } from './types.js';
|
2
3
|
export declare const defaultTerserOptions: TerserMinimizerOptions;
|
4
|
+
export declare const defaultMinimizerRspackOptions: SwcJsMinimizerRspackPluginOptions['minimizerOptions'];
|
@@ -1 +1 @@
|
|
1
|
-
export const defaultTerserOptions={ecma:void 0,parse:{},compress:{},mangle:!0,module:!1,output:void 0,toplevel:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1,safari10:!1};
|
1
|
+
export const defaultTerserOptions={ecma:void 0,parse:{},compress:{},mangle:!0,module:!1,output:void 0,toplevel:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1,safari10:!1};export const defaultMinimizerRspackOptions={compress:{ecma:void 0,module:!1,toplevel:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1},mangle:!0,module:!1,format:{ecma:void 0,safari10:!1}};
|
@@ -1 +1,2 @@
|
|
1
|
-
export * from './create-minimizers.js';
|
1
|
+
export * from './rspack/create-minimizers.js';
|
2
|
+
export * from './webpack/create-minimizers.js';
|
package/dist/minimizer/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export*from"./create-minimizers.js";
|
1
|
+
export*from"./rspack/create-minimizers.js";export*from"./webpack/create-minimizers.js";
|
@@ -0,0 +1 @@
|
|
1
|
+
import{logger}from"@flatjs/common";import{LightningCssMinimizerRspackPlugin}from"@rspack/core";import{moduleName}from"../../constants.js";import{printInfo}from"../../helpers/print-log.js";import{imageRspackMinimizer}from"./image-minimizer.js";import{terserRspackMinimizer}from"./terser-minimizer.js";export const createRspackMinimizers=(i,r)=>{const e=[];if(i)return logger.debug("Ignore minimizer plugin for `serve` mode",moduleName),e;if(!1===r?.minimizer)return printInfo("Note `minimizer` has been disabled for now"),e;if(e.push(new LightningCssMinimizerRspackPlugin({removeUnusedLocalIdents:!1})),r?.minimizer?.imageMin){const i=imageRspackMinimizer();i&&e.push(i)}if(!1===r?.minimizer?.terserOptions)return e;const m=terserRspackMinimizer(r?.minimizer?.terserOptions||{});return e.push(m),e};
|
@@ -13,4 +13,4 @@ import ImageMinimizerPlugin from 'image-minimizer-webpack-plugin';
|
|
13
13
|
* sudo yum install gifsicle
|
14
14
|
* @returns
|
15
15
|
*/
|
16
|
-
export declare const
|
16
|
+
export declare const imageRspackMinimizer: () => ImageMinimizerPlugin<unknown, unknown> | null;
|
@@ -0,0 +1 @@
|
|
1
|
+
import ImageMinimizerPlugin from"image-minimizer-webpack-plugin";import{projectHasYarn}from"@armit/package";import{chalk,logger,requireResolve}from"@flatjs/common";import{moduleName}from"../../constants.js";const logs=new Map;export const imageRspackMinimizer=()=>{const e=[],i=[["svgo",{}],["gifsicle",{}],["jpegtran",{}],["pngquant",{}]].map((i=>{const n=i[0];try{return requireResolve(import.meta.url,`imagemin-${n}`),i}catch{if(!logs.get(n)){logs.set(n,!0);const i=chalk(["magenta"])(`"${projectHasYarn()?"yarn add":"npm install"} imagemin-${n} -D"`);e.push(`Execute ${i} for assets optimization`)}return null}})).filter(Boolean);if(e.length)for(const i of e)logger.warn(i,moduleName);return i.length?new ImageMinimizerPlugin({minimizer:{implementation:ImageMinimizerPlugin.imageminMinify,options:{plugins:i}}}):null};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { type Plugin } from '@rspack/core';
|
2
|
+
import { type TerserMinimizerOptions } from '../types.js';
|
3
|
+
/**
|
4
|
+
* https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
|
5
|
+
*/
|
6
|
+
export declare const terserRspackMinimizer: (terserOptions: TerserMinimizerOptions) => Plugin;
|
@@ -0,0 +1 @@
|
|
1
|
+
import _ from"lodash";import{logger,mergeOptions}from"@flatjs/common";import{SwcJsMinimizerRspackPlugin}from"@rspack/core";import{defaultMinimizerRspackOptions}from"../default-options.js";const assertRspackKeepOption=e=>{if(e)return _.isRegExp(e)?(logger.warn("Rspack does not support RegExp for keep_classnames or keep_fnames, use true instead"),!0):e};export const terserRspackMinimizer=e=>{const s=assertRspackKeepOption(e.keep_classnames),p=assertRspackKeepOption(e.keep_fnames);let a;return a&&_.isRegExp(a)?a=!0:a&&"object"==typeof a&&(a={...a,keep_classnames:assertRspackKeepOption(a.keep_classnames),keep_fnames:assertRspackKeepOption(a.keep_fnames)}),new SwcJsMinimizerRspackPlugin({extractComments:!1,minimizerOptions:mergeOptions(defaultMinimizerRspackOptions,{compress:{ecma:e.ecma,module:e.module,toplevel:e.toplevel,ie8:e.ie8,keep_classnames:s,keep_fnames:p},mangle:a,module:e.module,format:{ecma:e.ecma,safari10:e.safari10}})})};
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import type { WebpackPlugin } from '../../types/types-webpack.js';
|
2
|
+
import { type FlatEvolveWebpackOptions } from '../../types/types-webpack.js';
|
3
|
+
export declare const createWebpackMinimizers: (serveMode: boolean, webpackOptions?: FlatEvolveWebpackOptions) => WebpackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{logger}from"@flatjs/common";import{moduleName}from"../../constants.js";import{printInfo}from"../../helpers/print-log.js";import{imageWebpackMinimizer}from"./image-minimizer.js";import{terserWebpackMinimizer}from"./terser-minimizer.js";export const createWebpackMinimizers=(i,e)=>{const r=[];if(i)return logger.debug("Ignore minimizer plugin for `serve` mode",moduleName),r;if(!1===e?.minimizer)return printInfo("Note `minimizer` has been disabled for now"),r;if(e?.minimizer?.imageMin){const i=imageWebpackMinimizer();i&&r.push(i)}if(!1===e?.minimizer?.terserOptions)return r;const m=terserWebpackMinimizer(e?.minimizer?.terserOptions||{});return r.push(m),r};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import ImageMinimizerPlugin from 'image-minimizer-webpack-plugin';
|
2
|
+
/**
|
3
|
+
* Install libpng library & gifsicle tool
|
4
|
+
* macos
|
5
|
+
* =====================
|
6
|
+
* brew install libpng
|
7
|
+
* brew install gifsicle
|
8
|
+
*
|
9
|
+
* centos
|
10
|
+
* =====================
|
11
|
+
* sudo yum install libpng
|
12
|
+
* sudo yum install epel-release
|
13
|
+
* sudo yum install gifsicle
|
14
|
+
* @returns
|
15
|
+
*/
|
16
|
+
export declare const imageWebpackMinimizer: () => ImageMinimizerPlugin<unknown, unknown> | null;
|
@@ -0,0 +1 @@
|
|
1
|
+
import ImageMinimizerPlugin from"image-minimizer-webpack-plugin";import{projectHasYarn}from"@armit/package";import{chalk,logger,requireResolve}from"@flatjs/common";import{moduleName}from"../../constants.js";const logs=new Map;export const imageWebpackMinimizer=()=>{const e=[],i=[["svgo",{}],["gifsicle",{}],["jpegtran",{}],["pngquant",{}]].map((i=>{const n=i[0];try{return requireResolve(import.meta.url,`imagemin-${n}`),i}catch{if(!logs.get(n)){logs.set(n,!0);const i=chalk(["magenta"])(`"${projectHasYarn()?"yarn add":"npm install"} imagemin-${n} -D"`);e.push(`Execute ${i} for assets optimization`)}return null}})).filter(Boolean);if(e.length)for(const i of e)logger.warn(i,moduleName);return i.length?new ImageMinimizerPlugin({minimizer:{implementation:ImageMinimizerPlugin.imageminMinify,options:{plugins:i}}}):null};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type { WebpackPlugin } from '../../types/types-webpack.js';
|
2
|
+
import { type TerserMinimizerOptions } from '../types.js';
|
3
|
+
/**
|
4
|
+
* https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
|
5
|
+
*/
|
6
|
+
export declare const terserWebpackMinimizer: (terserOptions: TerserMinimizerOptions) => WebpackPlugin;
|
@@ -1,3 +1,3 @@
|
|
1
|
-
import TerserPlugin from"terser-webpack-plugin";import{mergeOptions}from"@flatjs/common";import{defaultTerserOptions}from"
|
1
|
+
import TerserPlugin from"terser-webpack-plugin";import{mergeOptions}from"@flatjs/common";import{defaultTerserOptions}from"../default-options.js";export const terserWebpackMinimizer=e=>new TerserPlugin({parallel:!0,
|
2
2
|
// Disable Extract all or some (use /^\**!|@preserve|@license|@cc_on/i RegExp) comments.
|
3
3
|
extractComments:!1,terserOptions:mergeOptions(defaultTerserOptions,e)});
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import {
|
2
|
-
import { type FlatEvolveOptions } from '
|
1
|
+
import type { Plugins } from '@rspack/core';
|
2
|
+
import { type FlatEvolveOptions } from '../../../types/types-options.js';
|
3
3
|
/**
|
4
4
|
* The DefinePlugin replaces variables in your code with other values or expressions at compile time.
|
5
5
|
* ```ts
|
@@ -11,4 +11,4 @@ import { type FlatEvolveOptions } from '../../types/types-options.js';
|
|
11
11
|
* ```
|
12
12
|
* @returns
|
13
13
|
*/
|
14
|
-
export declare const
|
14
|
+
export declare const createBuiltinDefineVariablesRspackPlugins: (serveMode: boolean, evolveOptions: FlatEvolveOptions) => Promise<Plugins>;
|
@@ -0,0 +1 @@
|
|
1
|
+
import{getLastCommitHash,gitBranchName}from"@armit/git";import{logger,mergeOptions}from"@flatjs/common";import{DefinePlugin}from"@rspack/core";export const createBuiltinDefineVariablesRspackPlugins=async(e,i)=>{const{ci:t}=i,n=t?.releaseVersion;let r={"process.env.FLAT_RELEASE_VERSION":JSON.stringify(n)};try{const e=await getLastCommitHash(),i=await gitBranchName();r=mergeOptions({"process.env.FLAT_COMMIT_HASH":JSON.stringify(e),"process.env.FLAT_BRANCH_NAME":JSON.stringify(i),"process.env.FLAT_RELEASE_VERSION":JSON.stringify(e)},r)}catch(e){logger.warn(`Failed to get commit hash or branch name: ${e.message}`)}return[new DefinePlugin({__SENTRY_DEBUG__:e,"process.env.FLAT_BUILD_DATE":JSON.stringify((new Date).toISOString()),...r,...i.pluginOptions.definePlugin})]};
|
@@ -0,0 +1 @@
|
|
1
|
+
import{Compilation,sources}from"@rspack/core";const{RawSource:RawSource}=sources,PLUGIN_NAME="ExternalTemplateRemotesRspackPlugin",isExternalModule=e=>"ExternalModule"===e.constructor.name;function extractUrlAndGlobal(e){const t=e.indexOf("@");if(t<=0||t===e.length-1)throw new Error(`Invalid request "${e}"`);return[e.substring(t+1),e.substring(0,t)]}export class ExternalTemplateRemotesRspackPlugin{apply(e){e.hooks.make.tap(PLUGIN_NAME,(e=>{const t=[];e.hooks.buildModule.tap(PLUGIN_NAME,(e=>{const o=e.identifier().startsWith("external script");isExternalModule(e)&&o&&t.push(e)})),e.hooks.processAssets.tap({name:PLUGIN_NAME,stage:Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},(o=>{t.forEach((t=>{const s=t.identifier().match(/"([^"]+)"/),n=s?s[1]:"",[r]=extractUrlAndGlobal(n),i=toExpression(r);for(const t of Object.keys(o)){const o=e.getAsset(t),s=o?.source.source()?.toString();if(s&&s.includes(r)){const o=s.replace(`"${r}"`,i);e.updateAsset(t,new RawSource(o))}}}))}))}))}}function toExpression(e){const t=[],o=[];let s=!1,n=!1;for(const r of e)if("["===r){if(s){n=!0;break}s=!0,o.length&&(t.push(`"${o.join("")}"`),o.length=0)}else if("]"===r){if(!s){n=!0;break}s=!1,o.length&&(t.push(`${o.join("")}`),o.length=0),o.length=0}else o.push(r);if(s||n)throw new Error(`Invalid template URL "${e}"`);return o.length&&t.push(`"${o.join("")}"`),t.join(" + ")}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { Plugin as RspackPlugin } from '@rspack/core';
|
2
|
+
import { type EntryMapItem } from '../../../types/types-entry-map.js';
|
3
|
+
import { type FlatEvolveOptions } from '../../../types/types-options.js';
|
4
|
+
export declare const createModuleFederationRspackPlugins: (serveMode: boolean, entryMapItemList: EntryMapItem[], evolveOptions: FlatEvolveOptions) => RspackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{join}from"node:path";import{ensureSlash}from"@flatjs/common";import rspack from"@rspack/core";import{normalizeEvolveEntryName}from"../../../helpers/normalize-entry-map.js";import{injectFederationScripts}from"../../../helpers/script-injects.js";import{HtmlInjectScriptWebpackPlugin}from"../../webpack/html-inject-scripts/index.js";import{ExternalTemplateRemotesRspackPlugin}from"./external-template-remotes-rspack-plugin.js";const normalizeWidgetName=(e="")=>e.replace(/[/-]/g,"_").toLowerCase(),remoteFileName=e=>join(e,"micro-remote-module.js");export const createModuleFederationRspackPlugins=(e,t,r)=>{const o=r.projectVirtualPath,n=r.multiHtmlCdn,i=r.multiHtmlCdnEnvResolver,m=[];for(const r of t){const[t,a]=r,s=a.options?.moduleFederation;if(s){const{remotes:r,exposes:a,...l}=s,c=remoteFileName(t),p=normalizeWidgetName(t),u=(a?Array.isArray(a)?a:[a]:[]).map((e=>{const r={};for(const[o,n]of Object.entries(e))r[o]={...n,name:join(t,n.name.replace(/^\//,""))};return r})),d=(r||[]).map((({name:e,endpoint:t})=>{const r=normalizeEvolveEntryName(e,o),n=normalizeWidgetName(r),i=remoteFileName(r),m=t?ensureSlash(t(e,r),!1):"[window.evolveFetchMicroWidgets()]";return{[n]:`${n}@${m}/${i}`}}));m.push(new rspack.container.ModuleFederationPlugin({...l,name:p,filename:c,remotes:d,exposes:u}),new ExternalTemplateRemotesRspackPlugin),e||m.unshift(new HtmlInjectScriptWebpackPlugin([injectFederationScripts(n,i)]))}}return m};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { Plugin as RspackPlugin } from '@rspack/core';
|
2
|
+
import { type EntryMapItem } from '../../../types/types-entry-map.js';
|
3
|
+
import { type FlatEvolveOptions } from '../../../types/types-options.js';
|
4
|
+
export declare const createHtmlRspackPlugins: (serveMode: boolean, entryMapItemList: EntryMapItem[], evolveOptions: FlatEvolveOptions) => RspackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{FlatEvolveMultiCdnRspackPlugin}from"./multi-html-cdn-rspack-plugin.js";import{createMultiHtmlRspackPlugins}from"./multi-html-rspack-plugin.js";export const createHtmlRspackPlugins=(t,l,u)=>{const i=[],s=l[0];if(t||s[1]?.options?.output?.library)return i;const n=Object.keys(u.multiHtmlCdn);return i.push(...createMultiHtmlRspackPlugins(t,u,l,n)),i.push(new FlatEvolveMultiCdnRspackPlugin(u,l)),i};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import type { Compiler } from 'webpack';
|
2
|
+
import type { EntryMapItem, FlatEvolveOptions } from '../../../types/index.js';
|
3
|
+
export declare class FlatEvolveMultiCdnRspackPlugin {
|
4
|
+
private pluginName;
|
5
|
+
private requireFn;
|
6
|
+
private config;
|
7
|
+
private cdnResolver;
|
8
|
+
private entryMapItemList;
|
9
|
+
constructor(evolveOptions: FlatEvolveOptions, entryMapItemList: EntryMapItem[]);
|
10
|
+
/**
|
11
|
+
* Apply the plugin to check if there are non initial chunks which need to be imported using `require-ensure` or `import`
|
12
|
+
* https://github.com/webpack/webpack/blob/3d653290fafe385277b48e5a36807124618b9561/lib/MainTemplate.js#L158
|
13
|
+
* https://www.npmjs.com/package/vscode-webpack-debugger
|
14
|
+
* https://www.cnblogs.com/Scar007/p/9166068.html
|
15
|
+
* https://www.cnblogs.com/pluslius/p/10271537.html
|
16
|
+
*/
|
17
|
+
apply(compiler: Compiler): void;
|
18
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
import HtmlWebpackPlugin from"html-webpack-plugin";import{basename}from"node:path";import{ensureSlash}from"@flatjs/common";import rspack from"@rspack/core";import{getRuntimeCDNBase}from"../../../helpers/get-runtime-cdn-base.js";import{findEnvCdn,httpUrlJoin}from"../../../helpers/script-injects.js";export class FlatEvolveMultiCdnRspackPlugin{constructor(e,t){if(this.pluginName="FlatEvolveMultiCdnRspackPlugin",this.requireFn=rspack.RuntimeGlobals.publicPath,this.config=e.multiHtmlCdn,this.entryMapItemList=t,this.cdnResolver=e.multiHtmlCdnEnvResolver||function cdnResolver(){},!this.config?.prod)throw new Error("We must setup `prod` for each CDN config node!")}apply(e){e.hooks.compilation.tap(this.pluginName,(e=>{e.hooks.runtimeModule.tap(this.pluginName,((e,t)=>{const s=this.entryMapItemList.find((e=>e[0]===t.name));if("public_path"===e.name&&s){const t=[];t.push("\n"),t.push("// Dynamic assets path override(`@flatjs/evolve`) plugin-multi-html-cdn`)"),t.push(getRuntimeCDNBase(this.config,this.cdnResolver,this.requireFn)),e.source.source=Buffer.from(t.join("\n"),"utf-8")}}))})),e.hooks.compilation.tap(this.pluginName,(e=>{HtmlWebpackPlugin.getHooks(e).beforeAssetTagGeneration.tap(this.pluginName,(e=>{const{assets:t,plugin:s,outputName:n}=e,i=s?.options?.chunks||[],r=Array.isArray(i)?i.find((e=>n.includes(ensureSlash(e,!0)))):i,{userOptions:o}=e.plugin;if(!r)throw new Error("We must have current chunk!");const a=t.js.filter((e=>e.includes(ensureSlash(r,!0)))),l=t.css.filter((e=>e.includes(ensureSlash(r,!0)))),u=o.multiCdn,p=t.publicPath,c=a.map((e=>{if(u.disabled)return basename(e);const t=findEnvCdn(this.config,u.env);return httpUrlJoin(t,e.replace(p,""))})),m=l.map((e=>{if(u.disabled)return basename(e);const t=findEnvCdn(this.config,u.env);return httpUrlJoin(t,e.replace(p,""))}));return e.assets.js=c,e.assets.css=m,e}))}))}}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { Compiler } from 'webpack';
|
2
|
-
import type { EntryMapItem } from '
|
2
|
+
import type { EntryMapItem } from '../../../types/types-entry-map.js';
|
3
3
|
/**
|
4
4
|
* The MultiHtmlModifyPlugin class is responsible for modifying the HTML output of the webpack compiler.
|
5
5
|
* It hooks into the compilation process and replaces occurrences of "<%= title %>" with the title specified in the options.
|
6
6
|
*/
|
7
|
-
export declare class
|
7
|
+
export declare class MultiHtmlModifyRspackPlugin {
|
8
8
|
private pluginName;
|
9
9
|
private entryMapItemList;
|
10
10
|
constructor(list: EntryMapItem[]);
|
@@ -0,0 +1 @@
|
|
1
|
+
import HtmlWebpackPlugin from"html-webpack-plugin";import{ensureSlash}from"@flatjs/common";const getCurrentEntryOptions=(t=[],i)=>{const e=t.find((t=>i.includes(ensureSlash(t[0],!0))));return e?e[1]?.options:void 0};export class MultiHtmlModifyRspackPlugin{constructor(t){this.pluginName="MultiHtmlModifyRspackPlugin",this.entryMapItemList=t}apply(t){t.hooks.compilation.tap(this.pluginName,(t=>{HtmlWebpackPlugin.getHooks(t).beforeEmit.tapAsync(this.pluginName,((t,i)=>{const e=getCurrentEntryOptions(this.entryMapItemList,t.outputName);/<%= title %>/.test(t.html)&&(t.html=t.html.replace(/<%= title %>/g,e?.title||"")),i(null,t)}))}))}}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { Plugin as RspackPlugin } from '@rspack/core';
|
2
|
+
import { type EntryMapItem } from '../../../types/types-entry-map.js';
|
3
|
+
import { type EvolveMultiCdnEnvType } from '../../../types/types-multi-html.js';
|
4
|
+
import { type FlatEvolveOptions } from '../../../types/types-options.js';
|
5
|
+
/**
|
6
|
+
* Create `html-webpack-plugin` for this build, refer to best practices
|
7
|
+
* We'd better pass only one entry for each `build` cycle
|
8
|
+
* @param buildEntryItem the entries for this `build`
|
9
|
+
* @param allEnv
|
10
|
+
*/
|
11
|
+
export declare const createMultiHtmlRspackPlugins: (serveMode: boolean, evolveOptions: FlatEvolveOptions, entryMapItemList: EntryMapItem[], allEnv: Array<EvolveMultiCdnEnvType>) => RspackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import HtmlWebpackPlugin from"html-webpack-plugin";import{existsSync}from"node:fs";import{logger}from"@flatjs/common";import{allowPx2remForModule}from"../../../helpers/allow-px2rem-for-module.js";import{getHtmlPluginConfig}from"../../../helpers/get-html-plugin-config.js";import{normalizeTemplateInjectTokens}from"../../../helpers/normalize-template-inject-tokens.js";import{findEnvCdn}from"../../../helpers/script-injects.js";import{MultiHtmlModifyRspackPlugin}from"./multi-html-modify--rspack-plugin.js";const minifyOpts={minifyJS:!0,removeComments:!0,collapseWhitespace:!0,collapseBooleanAttributes:!1};export const createMultiHtmlRspackPlugins=(e,t,l,i)=>{const n=l[0],[,o]=n,m=[new MultiHtmlModifyRspackPlugin(l)],{options:p}=o,r=e?"development":"production",s=l.map((e=>e[0]));for(const e of i){const l={mode:r,envCdn:findEnvCdn(t.multiHtmlCdn,e)},i=normalizeTemplateInjectTokens(l,p);let o=getHtmlPluginConfig("templatePath",l,p?.templatePath).replace("{0}",e.trim());existsSync(o)||(logger.warn(`The template file ${o} is not exists, use \`prod\` instead!`),o=getHtmlPluginConfig("templatePath",l,p?.templatePath).replace("{0}","prod")),m.push(new HtmlWebpackPlugin({inject:"body",title:getHtmlPluginConfig("title",l,p?.title),chunks:s,minify:!1!==p?.htmlMinify&&!["me","dev"].includes(e)&&minifyOpts,filename:t=>`${t}/index${"prod"===e?"":`-${e}`}.html`,template:o,templateParameters:{title:"<%= title %>",favicon:getHtmlPluginConfig("favicon",l,p?.favicon),viewport:allowPx2remForModule(n,t)?getHtmlPluginConfig("viewport",l,p?.viewport):"",...i},multiCdn:{env:e,disabled:(p?.excludeCdnEnvs||["me","dev","ntv"]).includes(e)}}))}return m};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { Plugin as RspackPlugin } from '@rspack/core';
|
2
|
+
import { type ProgressPluginArgument } from '@rspack/core';
|
3
|
+
import type { EntryMapItem } from '../../../types/types-entry-map.js';
|
4
|
+
export declare const createProgressRspackPlugins: (entryMapItemList: EntryMapItem[], pluginOptions?: ProgressPluginArgument) => RspackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{Worker}from"node:worker_threads";import{resolve}from"path";import{mergeOptions}from"@armit/config-loader";import{getDirname}from"@armit/file-utility";import{ProgressPlugin}from"@rspack/core";import{progressHandler}from"./progress-handler.js";export const createProgressRspackPlugins=(r,e={})=>{if("test"===process.env.NODE_ENV)return console.warn("[WARNING] Using fake thread pool worker for unittest!"),[new ProgressPlugin({prefix:"[ evolve vite progress ]"})];const o=resolve(getDirname(import.meta.url),"./progress-worker.js"),s=new Worker(o,{env:{...process.env,FORCE_COLOR:"3"}}),t=mergeOptions(progressHandler(s,r),e);return[new ProgressPlugin(t),{apply(r){r.hooks.done.tap("shutdown",(()=>{s.terminate()}))}}]};
|
@@ -0,0 +1 @@
|
|
1
|
+
export const progressHandler=(s,t)=>{const e=t[0],[r,a]=e,o=a?.groupName||"",n=t.map((([s])=>s));return(t,e)=>{const r={status:t>0&&t<1?"start":"end",data:{groupName:o,entryKeys:n}};s.postMessage(r)}};
|
@@ -0,0 +1 @@
|
|
1
|
+
import logUpdate from"log-update";import{parentPort}from"worker_threads";import{chalk}from"@flatjs/common";import{buildProgressSpinnerFrames}from"../../../constants.js";import{formatSpinnerText}from"../../../helpers/format-spinner-text.js";let startIndex=0;class ProgressWorker{constructor(){this.intervalId=null}start(r,e){this.intervalId||(this.intervalId=setInterval((()=>{startIndex=++startIndex%buildProgressSpinnerFrames.length;const t=buildProgressSpinnerFrames[startIndex],n=`Group ${chalk(["magenta"])(r)} compiling...`;logUpdate(`${chalk(["cyan"])(t)} ${n} \n${formatSpinnerText(e)}`)}),100))}end(r,e){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null);const t=`Group ${chalk(["magenta"])(r)} ${chalk(["green"])("done")}`;logUpdate(`${chalk(["green"])("✔")} ${t} \n${formatSpinnerText(e,"✔","green")}`),logUpdate.done()}}const progressWorker=new ProgressWorker;parentPort?.on("message",(({status:r,data:e})=>{const{groupName:t,entryKeys:n}=e;"start"===r?progressWorker.start(t,n):"end"===r&&progressWorker.end(t,n)}));
|
@@ -46,7 +46,7 @@ export interface Options {
|
|
46
46
|
compilation: Compilation;
|
47
47
|
}) => void;
|
48
48
|
}
|
49
|
-
export declare class
|
49
|
+
export declare class CircularDependencyWebpackPlugin {
|
50
50
|
private options;
|
51
51
|
constructor(options?: Options);
|
52
52
|
apply(compiler: Compiler): void;
|
@@ -0,0 +1 @@
|
|
1
|
+
import{relative}from"node:path";import Graph from"tarjan-graph";import webpack from"webpack";import{mergeOptions}from"@flatjs/common";const BASE_ERROR="Circular dependency detected:\r\n",PLUGIN_TITLE="CircularDependencyWebpackPlugin";export class CircularDependencyWebpackPlugin{constructor(o={}){this.options=mergeOptions({exclude:/node_modules/,include:/.*/,failOnError:!1,allowAsyncCycles:!1,projectCwd:process.cwd()},o)}apply(o){const e=this.options.projectCwd;o.hooks.compilation.tap(PLUGIN_TITLE,(o=>{o.hooks.optimizeModules.tap(PLUGIN_TITLE,(t=>{this.options.onStart&&this.options.onStart({compilation:o});const n=new(Graph.default||Graph);for(const e of t){const t=[];for(const n of e.dependencies){if(n.constructor&&"CommonJsSelfReferenceDependency"===n.constructor.name)continue;let r=null;r=o.moduleGraph?o.moduleGraph.getModule(n):n.module,r&&(r instanceof webpack.NormalModule&&r.resource&&(this.options.allowAsyncCycles&&n.weak||e!==r&&t.push(r.identifier())))}n.add(e.identifier(),t)}const r=n.getCycles();this.isCyclic(r,o,e),this.options.onEnd&&this.options.onEnd({compilation:o})}))}))}isCyclic(o,e,t){o.forEach((o=>{const n=o.slice().reverse().map((o=>{const t=e.findModule(o.name);return t instanceof webpack.NormalModule&&t.resource||null}));if(n.every((o=>!o||this.options.exclude.test(o)||!this.options.include.test(o))))return;const r=n.map((o=>relative(t,o)));if(this.options.onDetected){try{this.options.onDetected({paths:r.concat([r[0]]),compilation:e})}catch(o){e.errors.push(o)}return}const s=new Error(BASE_ERROR.concat(r.concat([r[0]]).join(" -> ")));this.options.failOnError?e.errors.push(s):e.warnings.push(s)}))}}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import type { FlatEvolveOptions } from '../../../types/types-options.js';
|
2
|
+
import type { WebpackPlugin } from '../../../types/types-webpack.js';
|
3
|
+
/**
|
4
|
+
* Detect modules with circular dependencies when bundling with webpack for `development` mode.
|
5
|
+
* @param serveMode development mode
|
6
|
+
* @param evolveOptions evolve options
|
7
|
+
* @returns
|
8
|
+
*/
|
9
|
+
export declare const createCircularDependencyWebpackPlugins: (serveMode: boolean, evolveOptions: FlatEvolveOptions) => WebpackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{CircularDependencyWebpackPlugin}from"./circular-dependency-webpack-plugin.js";export const createCircularDependencyWebpackPlugins=(e,c)=>e?[new CircularDependencyWebpackPlugin({projectCwd:c.projectCwd})]:[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{rmSync}from"node:fs";import{relative}from"node:path";import{fileWalkSync}from"@armit/file-utility";import{logger}from"@flatjs/common";import{moduleName}from"../../../constants.js";export class CleanWebpackPlugin{constructor(e={}){this.verbose=!0===e.verbose||!1,this.projectCwd=e.projectCwd||process.cwd(),this.cleanStaleWebpackAssets=!0!==e.cleanStaleWebpackAssets&&!1!==e.cleanStaleWebpackAssets||e.cleanStaleWebpackAssets,this.protectWebpackAssets=!0!==e.protectWebpackAssets&&!1!==e.protectWebpackAssets||e.protectWebpackAssets,this.cleanAfterEveryBuildPatterns=Array.isArray(e.cleanAfterEveryBuildPatterns)?e.cleanAfterEveryBuildPatterns:[],this.cleanOnceBeforeBuildPatterns=Array.isArray(e.cleanOnceBeforeBuildPatterns)?e.cleanOnceBeforeBuildPatterns:["**/*"],this.currentAssets=[],this.initialClean=!1,this.outputPath="",this.apply=this.apply.bind(this),this.handleInitial=this.handleInitial.bind(this),this.handleDone=this.handleDone.bind(this),this.removeFiles=this.removeFiles.bind(this)}apply(e){if(!e.options.output||!e.options.output.path)return void logger.warn("clean-webpack-plugin: options.output.path not defined. Plugin disabled...",moduleName);this.outputPath=e.options.output.path;const t=e.hooks;0!==this.cleanOnceBeforeBuildPatterns.length&&t.emit.tap("clean-webpack-plugin",(e=>{this.handleInitial(e)})),t.done.tap("clean-webpack-plugin",(e=>{logger.info("start clean cache..."),this.handleDone(e)}))}handleInitial(e){if(this.initialClean)return;e.getStats().hasErrors()||(this.initialClean=!0,this.removeFiles(this.cleanOnceBeforeBuildPatterns))}handleDone(e){if(e.hasErrors())return void(this.verbose&&logger.warn("clean-webpack-plugin: pausing due to webpack errors",moduleName));const t=(e.toJson({assets:!0}).assets||[]).map((e=>e.name)),s=this.currentAssets.filter((e=>!1===t.includes(e)));this.currentAssets=t.sort();const i=[];!0===this.cleanStaleWebpackAssets&&0!==s.length&&i.push(...s),0!==this.cleanAfterEveryBuildPatterns.length&&i.push(...this.cleanAfterEveryBuildPatterns),0!==i.length&&this.removeFiles(i)}removeFiles(e){try{const t=fileWalkSync(e,{absolute:!0,unique:!0,cwd:this.outputPath,dot:!0,ignore:this.protectWebpackAssets?this.currentAssets:[]});for(const e of t)rmSync(e,{force:!0,recursive:!0});this.verbose&&t.forEach((e=>{const t=relative(this.projectCwd,e);logger.debug(`clean-webpack-plugin: removed ${t}`,moduleName)}))}catch(e){if(/Cannot delete files\/folders outside the current working directory\./.test(e.message)){throw new Error("clean-webpack-plugin: Cannot delete files/folders outside the current working directory. Can be overridden with the `dangerouslyAllowCleanPatternsOutsideProject` option.")}throw e}}}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { type EntryMapItem } from '../../../types/types-entry-map.js';
|
2
|
+
import { type FlatEvolveOptions } from '../../../types/types-options.js';
|
3
|
+
import type { WebpackPlugin } from '../../../types/types-webpack.js';
|
4
|
+
/**
|
5
|
+
* Cleaning up the /dist folder for `production` build
|
6
|
+
* @param singleEntryItem
|
7
|
+
* @returns
|
8
|
+
*/
|
9
|
+
export declare const createCleanWebpackPlugins: (serveMode: boolean, entryMapItemList: EntryMapItem[], evolveOptions: FlatEvolveOptions) => WebpackPlugin[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import{posix}from"node:path";import{ensureSlash}from"@flatjs/common";import{CleanWebpackPlugin}from"./clean-webpack-plugin.js";export const createCleanWebpackPlugins=(e,n,o)=>e?[]:[new CleanWebpackPlugin({verbose:!0,projectCwd:o.projectCwd,cleanOnceBeforeBuildPatterns:n.map((e=>`${posix.join(ensureSlash(e[0],!0),"**/*")}`))})];
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import type { FlatEvolveOptions } from '../../../types/types-options.js';
|
2
|
+
import type { WebpackPlugin } from '../../../types/types-webpack.js';
|
3
|
+
/**
|
4
|
+
* The DefinePlugin replaces variables in your code with other values or expressions at compile time.
|
5
|
+
* ```ts
|
6
|
+
* `__SENTRY_DEBUG__`
|
7
|
+
* `process.env.FLAT_BUILD_DATE`
|
8
|
+
* `process.env.FLAT_COMMIT_HASH`
|
9
|
+
* `process.env.FLAT_BRANCH_NAME`
|
10
|
+
* `process.env.FLAT_RELEASE_VERSION`
|
11
|
+
* ```
|
12
|
+
* @param serveMode development mode
|
13
|
+
* @param evolveOptions evolve options
|
14
|
+
* @returns
|
15
|
+
*/
|
16
|
+
export declare const createBuiltinDefineVariablesWebpackPlugins: (serveMode: boolean, evolveOptions: FlatEvolveOptions) => Promise<WebpackPlugin[]>;
|
@@ -0,0 +1 @@
|
|
1
|
+
import webpack from"webpack";import{getLastCommitHash,gitBranchName}from"@armit/git";import{logger,mergeOptions}from"@flatjs/common";export const createBuiltinDefineVariablesWebpackPlugins=async(e,t)=>{const{ci:i}=t,n=i?.releaseVersion;let r={"process.env.FLAT_RELEASE_VERSION":JSON.stringify(n)};try{const e=await getLastCommitHash(),t=await gitBranchName();r=mergeOptions({"process.env.FLAT_COMMIT_HASH":JSON.stringify(e),"process.env.FLAT_BRANCH_NAME":JSON.stringify(t),"process.env.FLAT_RELEASE_VERSION":JSON.stringify(e)},r)}catch(e){logger.warn(`Failed to get commit hash or branch name: ${e.message}`)}return[new webpack.DefinePlugin({__SENTRY_DEBUG__:e,"process.env.FLAT_BUILD_DATE":JSON.stringify((new Date).toISOString()),...r,...t.pluginOptions.definePlugin})]};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { HtmlTagObject } from 'html-webpack-plugin';
|
2
2
|
import type { Compiler, WebpackPluginInstance } from 'webpack';
|
3
|
-
export declare class
|
3
|
+
export declare class HtmlInjectScriptWebpackPlugin implements WebpackPluginInstance {
|
4
4
|
scripts: string[];
|
5
5
|
constructor(scripts?: string[]);
|
6
6
|
processScripts(): HtmlTagObject[];
|
@@ -0,0 +1 @@
|
|
1
|
+
import htmlWebpackPlugin from"html-webpack-plugin";const PLUGIN_PREFIX="HtmlInjectScriptWebpackPlugin";export class HtmlInjectScriptWebpackPlugin{constructor(t){this.scripts=t||[]}processScripts(){return this.scripts.filter(Boolean).map((t=>({tagName:"script",innerHTML:t,voidTag:!1,attributes:{},meta:{plugin:"html-inject-script-webpack-plugin"}})))}apply(t){t.hooks.compilation.tap(`${PLUGIN_PREFIX}_compilation`,(t=>{htmlWebpackPlugin.getHooks(t).alterAssetTags.tap(`${PLUGIN_PREFIX}_alterAssetTags`,(t=>(t.assetTags.scripts.unshift(...this.processScripts()),t)))}))}}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import type { HtmlTagObject } from 'html-webpack-plugin';
|
2
|
+
import type { Compilation as CompilationOptions, Compiler, WebpackPluginInstance } from 'webpack';
|
3
|
+
/**
|
4
|
+
* https://github.com/icelam/html-inline-script-webpack-plugin/blob/master/src/HtmlInlineScriptPlugin.ts
|
5
|
+
*/
|
6
|
+
export declare class HtmlInlineScriptWebpackPlugin implements WebpackPluginInstance {
|
7
|
+
tests: RegExp[];
|
8
|
+
constructor(tests?: RegExp[]);
|
9
|
+
isFileNeedsToBeInlined(assetName: string): boolean;
|
10
|
+
processScriptTag(publicPath: string, assets: CompilationOptions['assets'], tag: HtmlTagObject): HtmlTagObject;
|
11
|
+
apply(compiler: Compiler): void;
|
12
|
+
}
|