@flatjs/evolve 1.8.1-next.45 → 1.8.1-next.46

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @flatjs/evolve
2
2
 
3
+ ## 1.8.1-next.46
4
+
5
+ ### Patch Changes
6
+
7
+ - a2e8c72: bump version
8
+ - 8875949: imporved evolve build logics
9
+ - Updated dependencies [a2e8c72]
10
+ - Updated dependencies [8875949]
11
+ - @flatjs/forge-postcss-plugin-pixel@1.8.1-next.21
12
+ - @flatjs/evolve-preset-babel@1.8.1-next.10
13
+ - @flatjs/common@1.8.1-next.21
14
+ - @flatjs/graph@1.8.1-next.24
15
+ - @flatjs/mock@1.8.1-next.40
16
+
3
17
  ## 1.8.1-next.45
4
18
 
5
19
  ### Patch Changes
@@ -1 +1 @@
1
- export const defaultEvolveOptions={projectCwd:process.cwd(),projectVirtualPath:"flatjs/evolve",rejectWarnings:!1,devServer:{autoOpen:!0,mockOptions:{mockBaseDir:"mocks"},clientOverlay:{errors:!0,warnings:!1},middlewares:[],watchOptions:{poll:1e3,ignored:/node_modules/,aggregateTimeout:500},defaultServeGlobalData:()=>Promise.resolve({})},webpack:{target:["web","es5"],plugins:[],ruleSets:[],publicPath:"auto",externals:{vue:"Vue",react:"React","react-dom":"ReactDOM"},outputDir:"public",enableBundleHashName:!0},pluginOptions:{},loaderOptions:{assetDataUrlMaxSize:4096,babelOptions:{usePreset:"react",plugins:[],presets:[]},runTsChecker:!0,lessOptions:{},cssnanoOptions:{},pixelOptions:{rootValue:{px:100,rpx:1},outputUnit:"rem"},modularImports:[]},entryMap:{},multiHtmlCdn:{},multiHtmlCdnEnvResolver:function cdnResolver(){},needVerifyPackages:{},packageInstallChecker:{enabled:!1,detectModules:["@dimjs/*"],throwError:!1,showAllInstalledGraph:!0},maxProcesses:"50%"};
1
+ export const defaultEvolveOptions={projectCwd:process.cwd(),projectVirtualPath:"flatjs/evolve",rejectWarnings:!1,devServer:{autoOpen:!0,mockOptions:{mockBaseDir:"mocks"},clientOverlay:{errors:!0,warnings:!1},middlewares:[],watchOptions:{poll:1e3,ignored:/node_modules/,aggregateTimeout:500},defaultServeGlobalData:()=>Promise.resolve({})},webpack:{target:["web","es5"],plugins:[],ruleSets:[],publicPath:"auto",externals:{vue:"Vue",react:"React","react-dom":"ReactDOM"},outputDir:"public",enableBundleHashName:!0},pluginOptions:{},loaderOptions:{assetDataUrlMaxSize:4096,babelOptions:{usePreset:"react",plugins:[],presets:[]},runTsChecker:!0,lessOptions:{},cssnanoOptions:{},pixelOptions:{rootValue:{px:100,rpx:1},outputUnit:"rem"},modularImports:[]},entryMap:{},multiHtmlCdn:{},multiHtmlCdnEnvResolver:function cdnResolver(){},needVerifyPackages:{},packageInstallChecker:{enabled:!1,detectModules:["@dimjs/*"],throwError:!1,showAllInstalledGraph:!0},maxProcesses:"50%",ci:{basedBranch:"master"}};
@@ -4,21 +4,16 @@ import { type FlatEvolveOptions } from '../types/types-options.js';
4
4
  export declare function getBuildEntryFiles(projectCwd: string, diffFiles: string[], allEntryInputs: string[]): Promise<string[]>;
5
5
  /**
6
6
  * Dynamic check which entry modules need to build.
7
- * @param projectCwd
8
- * @param basedCommitHash
9
- * @param newCommitHash
10
- * @param overrideEvolveOptions
11
- * @param configLoaderOptions
12
7
  * @returns
13
8
  */
14
- export declare function dynamicCheckBuildEntryMap(projectCwd: string, basedCommitHash: string, newCommitHash?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions): Promise<{
9
+ export declare function dynamicCheckBuildEntryMap(projectCwd: string, earlyCommit?: string | null, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions): Promise<{
15
10
  buildEntries: import("../index.js").EvolveEntryMap;
16
11
  newEvolveOptions: FlatEvolveOptions;
17
12
  }>;
18
13
  /**
19
14
  * The main entry to start an evolve `build` with automatically detect modules which have been changed between two commits.
20
15
  * @param projectCwd The Root directory (workspace) of this project.
21
- * @param basedCommitHash The diff based commit hash
22
- * @param newCommitHash If is omitted, it will have the same effect as using HEAD instead.
16
+ * @param earlyCommit The diff based earlier commit hash
17
+ * @param lastCommit If is omitted, it will have the same effect as using HEAD instead.
23
18
  */
24
- export declare const startDynamicBuild: (projectCwd: string, basedCommitHash: string, newCommitHash?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions) => Promise<import("./prepare-build.js").EvolveBuildResult[]>;
19
+ export declare const startDynamicBuild: (projectCwd: string, earlyCommit?: string, lastCommit?: string, overrideEvolveOptions?: PartialDeep<FlatEvolveOptions>, configLoaderOptions?: ConfigLoaderOptions) => Promise<import("./prepare-build.js").EvolveBuildResult[]>;
@@ -1 +1 @@
1
- import{isAbsolute,join}from"node:path";import{getDiffFiles}from"@armit/git";import{arraysIntersect,logger}from"@flatjs/common";import{traverseGraph}from"@flatjs/graph";import{filterActivedEntriesByEntryInputs}from"../helpers/filter-actived-entries.js";import{getGitRoot}from"../helpers/get-git-root.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{resolveEntryMapInputFiles}from"../helpers/resolve-entry-map-input-files.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{prepareBuild}from"./prepare-build.js";export async function getBuildEntryFiles(t,r,e){const o=[],i=[];for(const t of e)r.includes(t)?o.push(t):i.push(t);if(i.length){const e=await traverseGraph({input:i,projectCwd:t,treeNodeFilter:()=>!0});if(!e)return o;for(const t of i){const i=e[t]||[];arraysIntersect(i,r)&&o.push(t)}}return o}export async function dynamicCheckBuildEntryMap(t,r,e,o,i){const n=await loadEvolveConfig({command:"build"},t,o,i),s=await resolveEntryMapInputFiles(t,n.entryMap);let a=await getDiffFiles(r,e);const l=getGitRoot(t);if(!l)throw new Error(`No .git root (${t}) found`);a=a.map((t=>isAbsolute(t)?t:join(l,t)));const p=await getBuildEntryFiles(t,a,s);return{buildEntries:await filterActivedEntriesByEntryInputs(t,n.entryMap,p),newEvolveOptions:n}}export const startDynamicBuild=async(t,r,e,o={},i)=>{const{buildEntries:n,newEvolveOptions:s}=await dynamicCheckBuildEntryMap(t,r,e,o,i),a=Object.keys(n);if(!a.length)return logger.warn("No build entries providered!"),[];logger.info({buildEntries:a});const l=normalizeEvolveEntryMap(n,s.entryMap);return prepareBuild(t,l,s)};
1
+ import{isAbsolute,join}from"node:path";import{getDiffFiles,getCommitIdOfBranch}from"@armit/git";import{arraysIntersect,logger}from"@flatjs/common";import{traverseGraph}from"@flatjs/graph";import{filterActivedEntriesByEntryInputs,filterActivedEntriesByModule}from"../helpers/filter-actived-entries.js";import{getGitRoot}from"../helpers/get-git-root.js";import{normalizeEvolveEntryMap}from"../helpers/normalize-entry-map.js";import{resolveEntryMapInputFiles}from"../helpers/resolve-entry-map-input-files.js";import{loadEvolveConfig}from"../load-config/load-evolve-config.js";import{prepareBuild}from"./prepare-build.js";export async function getBuildEntryFiles(e,t,r){const i=[],o=[];for(const e of r)t.includes(e)?i.push(e):o.push(e);if(o.length){const r=await traverseGraph({input:o,projectCwd:e,treeNodeFilter:()=>!0});if(!r)return i;logger.debug(r,"DependencyGraph");for(const e of o){const o=r[e]||[];arraysIntersect(o,t)&&i.push(e)}}return i}export async function dynamicCheckBuildEntryMap(e,t,r,i,o){const n=await loadEvolveConfig({command:"build"},e,i,o);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 ..."),!t){const e=n.ci?.basedBranch||"master";logger.info(`Resolving base branch "${e}" commit hash ...`),t=await getCommitIdOfBranch(e)}let l=t?await getDiffFiles(t,r):[];const s=getGitRoot(e);if(!s)throw new Error(`No .git root (${e}) found`);if(l=l.map((e=>isAbsolute(e)?e:join(s,e))),logger.debug(l,"DiffFiles"),!l.length)return logger.warn("It seems that there are no code files changed."),{buildEntries:{},newEvolveOptions:n};const a=await resolveEntryMapInputFiles(e,n.entryMap),d=await getBuildEntryFiles(e,l,a);logger.debug(d,"ToBuildEntryFiles");return{buildEntries:await filterActivedEntriesByEntryInputs(e,n.entryMap,d),newEvolveOptions:n}}export const startDynamicBuild=async(e,t,r,i={},o)=>{const{buildEntries:n,newEvolveOptions:l}=await dynamicCheckBuildEntryMap(e,t,r,i,o),s=Object.keys(n);if(!s.length)return logger.warn("No build entries providered!"),[];logger.info({buildEntries:s});const a=normalizeEvolveEntryMap(n,l.entryMap);return prepareBuild(e,a,l)};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The CI pipeline execute `priority` as below
3
+ * 1. Fixed module build depends on config : `fixedBuildModules` of `flatjs-evolve.config.mts`
4
+ * 2. Dynamic build depends on commits (`flat build evolve --commits=""`)
5
+ * 3. Normally build manually using (`flat build evolve -m "a;b"`)
6
+ */
7
+ export type FlatEvolveCI = {
8
+ /**
9
+ * The build module patterns, `Highest Priority First`
10
+ * Support "a;b;c" RegExp pattern; `new RegExp(`${pattern}`).test(entryKey)`
11
+ */
12
+ fixedBuildModules?: string[];
13
+ /**
14
+ * Dynamic build depends on persistent `branch`, e.g. `main`,`master`,`release`
15
+ * @default `master`
16
+ */
17
+ basedBranch: string;
18
+ };
@@ -0,0 +1 @@
1
+ export{};
@@ -43,7 +43,7 @@ export interface RuleSetLoaderOptions {
43
43
  * The overrided configurations of `cssnano-preset-default`
44
44
  * sometimes we need to disabled some rules for `default cssnano preset`
45
45
  * @example
46
- * diable `postcss-minify-font-values` rule to avoid transitions from `font-weight:bold` to `font-weight:700`
46
+ * disable `postcss-minify-font-values` rule to avoid transitions from `font-weight:bold` to `font-weight:700`
47
47
  * ```json
48
48
  * cssnanoOptions: { minifyFontValues: false }
49
49
  * ```
@@ -1,4 +1,5 @@
1
1
  import { type VerifyPackagePattern } from '@armit/package';
2
+ import { type FlatEvolveCI } from './types-ci.js';
2
3
  import { type FlatEvolveDevServerOptions } from './types-dev-server.js';
3
4
  import { type EvolveEntryMap } from './types-entry-map.js';
4
5
  import { type RuleSetLoaderOptions } from './types-loader-options.js';
@@ -109,4 +110,8 @@ export interface FlatEvolveOptions {
109
110
  * @default false
110
111
  */
111
112
  rejectWarnings?: boolean;
113
+ /**
114
+ * The faster builds, simplified ci pipeline configurations
115
+ */
116
+ ci?: FlatEvolveCI;
112
117
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatjs/evolve",
3
- "version": "1.8.1-next.45",
3
+ "version": "1.8.1-next.46",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -37,15 +37,15 @@
37
37
  "typecheck": "tsc --project ./tsconfig.json --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "@armit/file-utility": "^0.0.21",
41
- "@armit/git": "^0.0.23",
42
- "@armit/package": "^0.0.34",
40
+ "@armit/file-utility": "^0.0.22",
41
+ "@armit/git": "^0.0.26",
42
+ "@armit/package": "^0.0.35",
43
43
  "@babel/core": "7.22.1",
44
- "@flatjs/common": "1.8.1-next.20",
45
- "@flatjs/evolve-preset-babel": "1.8.1-next.9",
46
- "@flatjs/forge-postcss-plugin-pixel": "1.8.1-next.20",
47
- "@flatjs/graph": "1.8.1-next.23",
48
- "@flatjs/mock": "1.8.1-next.39",
44
+ "@flatjs/common": "1.8.1-next.21",
45
+ "@flatjs/evolve-preset-babel": "1.8.1-next.10",
46
+ "@flatjs/forge-postcss-plugin-pixel": "1.8.1-next.21",
47
+ "@flatjs/graph": "1.8.1-next.24",
48
+ "@flatjs/mock": "1.8.1-next.40",
49
49
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
50
50
  "@types/babel__core": "7.20.1",
51
51
  "babel-loader": "9.1.2",
@@ -70,20 +70,20 @@
70
70
  "svgo": "3.0.2",
71
71
  "terser-webpack-plugin": "5.3.9",
72
72
  "tsconfig-paths-webpack-plugin": "4.0.1",
73
- "type-fest": "^3.11.0",
73
+ "type-fest": "^3.11.1",
74
74
  "webpack": "5.84.1",
75
75
  "webpack-bundle-analyzer": "4.8.0",
76
76
  "webpack-dev-server": "4.15.0",
77
77
  "webpack-sources": "3.2.3"
78
78
  },
79
79
  "devDependencies": {
80
- "@armit/eslint-config-bases": "^0.0.17",
81
- "@flatjs/testing": "1.8.1-next.19",
80
+ "@armit/eslint-config-bases": "^0.0.18",
81
+ "@flatjs/testing": "1.8.1-next.20",
82
82
  "@swc/core": "1.3.61",
83
83
  "@types/express": "4.17.17",
84
84
  "@types/node": "20.2.5",
85
- "@vitest/coverage-istanbul": "0.31.1",
86
- "@vitest/ui": "0.31.1",
85
+ "@vitest/coverage-istanbul": "0.31.2",
86
+ "@vitest/ui": "0.31.2",
87
87
  "eslint": "8.41.0",
88
88
  "imagemin-gifsicle": "7.0.0",
89
89
  "imagemin-jpegtran": "7.0.0",
@@ -96,7 +96,7 @@
96
96
  "swc-unplugin-ts": "1.0.2",
97
97
  "ts-node": "10.9.1",
98
98
  "vite-tsconfig-paths": "4.2.0",
99
- "vitest": "0.31.1",
99
+ "vitest": "0.31.2",
100
100
  "vue-loader": "17.1.2"
101
101
  },
102
102
  "peerDependencies": {