mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-19 21:06:06 +08:00
feat(cli): 支持tmagic.config.local配置文件,会与tmagic.config配置合并,可用于本地开发时的临时配置
This commit is contained in:
parent
0643699fac
commit
9f350541bf
@ -30,6 +30,7 @@
|
|||||||
"chokidar": "^3.6.0",
|
"chokidar": "^3.6.0",
|
||||||
"esbuild": "^0.21.5",
|
"esbuild": "^0.21.5",
|
||||||
"fs-extra": "^11.2.0",
|
"fs-extra": "^11.2.0",
|
||||||
|
"merge-options": "^3.0.4",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
"recast": "^0.23.11",
|
"recast": "^0.23.11",
|
||||||
"tslib": "^2.8.0"
|
"tslib": "^2.8.0"
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
|
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
|
// @ts-ignore
|
||||||
|
import mergeOptions from 'merge-options';
|
||||||
|
|
||||||
import App from '../Core';
|
import App from '../Core';
|
||||||
import { UserConfig } from '../types';
|
import { UserConfig } from '../types';
|
||||||
@ -22,18 +24,29 @@ export const scripts = (defaultAppConfig: UserConfig) => {
|
|||||||
path.resolve(defaultAppConfig.temp, 'config.cjs'),
|
path.resolve(defaultAppConfig.temp, 'config.cjs'),
|
||||||
].find((item) => fs.pathExistsSync(item));
|
].find((item) => fs.pathExistsSync(item));
|
||||||
|
|
||||||
const { npmConfig = {}, ...userConfig } = await loadUserConfig(userConfigPath);
|
const localUserConfigPath = [
|
||||||
|
path.resolve(defaultAppConfig.source, 'tmagic.config.local.ts'),
|
||||||
|
path.resolve(defaultAppConfig.source, 'tmagic.config.local.js'),
|
||||||
|
path.resolve(defaultAppConfig.source, 'tmagic.config.local.cjs'),
|
||||||
|
path.resolve(defaultAppConfig.temp, 'config.local.ts'),
|
||||||
|
path.resolve(defaultAppConfig.temp, 'config.local.js'),
|
||||||
|
path.resolve(defaultAppConfig.temp, 'config.local.cjs'),
|
||||||
|
].find((item) => fs.pathExistsSync(item));
|
||||||
|
|
||||||
|
let userConfig = await loadUserConfig(userConfigPath);
|
||||||
|
|
||||||
|
if (localUserConfigPath) {
|
||||||
|
const localUserConfig = await loadUserConfig(localUserConfigPath);
|
||||||
|
|
||||||
|
if (localUserConfig.packages?.length) {
|
||||||
|
localUserConfig.packages = [...(userConfig.packages || []), ...localUserConfig.packages];
|
||||||
|
}
|
||||||
|
|
||||||
|
userConfig = mergeOptions(userConfig, localUserConfig);
|
||||||
|
}
|
||||||
|
|
||||||
// resolve the final app config to use
|
// resolve the final app config to use
|
||||||
const appConfig = {
|
const appConfig = mergeOptions(defaultAppConfig, userConfig);
|
||||||
...defaultAppConfig,
|
|
||||||
...userConfig,
|
|
||||||
npmConfig: {
|
|
||||||
...(defaultAppConfig.npmConfig || {}),
|
|
||||||
...npmConfig,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const app = new App(appConfig);
|
const app = new App(appConfig);
|
||||||
|
|
||||||
// clean temp and cache
|
// clean temp and cache
|
||||||
|
@ -601,10 +601,20 @@ const flattenPackagesConfig = (packages: (string | Record<string, string>)[]) =>
|
|||||||
const packagesConfig: ([string] | [string, string])[] = [];
|
const packagesConfig: ([string] | [string, string])[] = [];
|
||||||
packages.forEach((item) => {
|
packages.forEach((item) => {
|
||||||
if (typeof item === 'object') {
|
if (typeof item === 'object') {
|
||||||
Object.entries(item).forEach(([key, packagePath]) => {
|
for (const [key, packagePath] of Object.entries(item)) {
|
||||||
packagesConfig.push([packagePath, key]);
|
const index = packagesConfig.findIndex(([, k]) => {
|
||||||
|
return k === key;
|
||||||
});
|
});
|
||||||
|
if (index > -1) {
|
||||||
|
packagesConfig[index] = [packagePath, key];
|
||||||
|
} else {
|
||||||
|
packagesConfig.push([packagePath, key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (typeof item === 'string') {
|
} else if (typeof item === 'string') {
|
||||||
|
if (packagesConfig.find(([k]) => k === item)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
packagesConfig.push([item]);
|
packagesConfig.push([item]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
17
pnpm-lock.yaml
generated
17
pnpm-lock.yaml
generated
@ -191,6 +191,9 @@ importers:
|
|||||||
fs-extra:
|
fs-extra:
|
||||||
specifier: ^11.2.0
|
specifier: ^11.2.0
|
||||||
version: 11.3.0
|
version: 11.3.0
|
||||||
|
merge-options:
|
||||||
|
specifier: ^3.0.4
|
||||||
|
version: 3.0.4
|
||||||
picocolors:
|
picocolors:
|
||||||
specifier: ^1.1.1
|
specifier: ^1.1.1
|
||||||
version: 1.1.1
|
version: 1.1.1
|
||||||
@ -5196,6 +5199,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
|
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
is-plain-obj@2.1.0:
|
||||||
|
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
is-potential-custom-element-name@1.0.1:
|
is-potential-custom-element-name@1.0.1:
|
||||||
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
|
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
|
||||||
|
|
||||||
@ -5509,6 +5516,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
|
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
merge-options@3.0.4:
|
||||||
|
resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
merge-stream@2.0.0:
|
merge-stream@2.0.0:
|
||||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||||
|
|
||||||
@ -11509,6 +11520,8 @@ snapshots:
|
|||||||
|
|
||||||
is-obj@2.0.0: {}
|
is-obj@2.0.0: {}
|
||||||
|
|
||||||
|
is-plain-obj@2.1.0: {}
|
||||||
|
|
||||||
is-potential-custom-element-name@1.0.1: {}
|
is-potential-custom-element-name@1.0.1: {}
|
||||||
|
|
||||||
is-reference@3.0.3:
|
is-reference@3.0.3:
|
||||||
@ -11842,6 +11855,10 @@ snapshots:
|
|||||||
|
|
||||||
meow@13.2.0: {}
|
meow@13.2.0: {}
|
||||||
|
|
||||||
|
merge-options@3.0.4:
|
||||||
|
dependencies:
|
||||||
|
is-plain-obj: 2.1.0
|
||||||
|
|
||||||
merge-stream@2.0.0: {}
|
merge-stream@2.0.0: {}
|
||||||
|
|
||||||
merge2@1.4.1: {}
|
merge2@1.4.1: {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user