mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-19 12:14:27 +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",
|
||||
"esbuild": "^0.21.5",
|
||||
"fs-extra": "^11.2.0",
|
||||
"merge-options": "^3.0.4",
|
||||
"picocolors": "^1.1.1",
|
||||
"recast": "^0.23.11",
|
||||
"tslib": "^2.8.0"
|
||||
|
@ -1,6 +1,8 @@
|
||||
import path from 'node:path';
|
||||
|
||||
import fs from 'fs-extra';
|
||||
// @ts-ignore
|
||||
import mergeOptions from 'merge-options';
|
||||
|
||||
import App from '../Core';
|
||||
import { UserConfig } from '../types';
|
||||
@ -22,18 +24,29 @@ export const scripts = (defaultAppConfig: UserConfig) => {
|
||||
path.resolve(defaultAppConfig.temp, 'config.cjs'),
|
||||
].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
|
||||
const appConfig = {
|
||||
...defaultAppConfig,
|
||||
...userConfig,
|
||||
npmConfig: {
|
||||
...(defaultAppConfig.npmConfig || {}),
|
||||
...npmConfig,
|
||||
},
|
||||
};
|
||||
|
||||
const appConfig = mergeOptions(defaultAppConfig, userConfig);
|
||||
const app = new App(appConfig);
|
||||
|
||||
// clean temp and cache
|
||||
|
@ -601,10 +601,20 @@ const flattenPackagesConfig = (packages: (string | Record<string, string>)[]) =>
|
||||
const packagesConfig: ([string] | [string, string])[] = [];
|
||||
packages.forEach((item) => {
|
||||
if (typeof item === 'object') {
|
||||
Object.entries(item).forEach(([key, packagePath]) => {
|
||||
packagesConfig.push([packagePath, key]);
|
||||
for (const [key, packagePath] of Object.entries(item)) {
|
||||
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') {
|
||||
if (packagesConfig.find(([k]) => k === item)) {
|
||||
return;
|
||||
}
|
||||
packagesConfig.push([item]);
|
||||
}
|
||||
});
|
||||
|
17
pnpm-lock.yaml
generated
17
pnpm-lock.yaml
generated
@ -191,6 +191,9 @@ importers:
|
||||
fs-extra:
|
||||
specifier: ^11.2.0
|
||||
version: 11.3.0
|
||||
merge-options:
|
||||
specifier: ^3.0.4
|
||||
version: 3.0.4
|
||||
picocolors:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
@ -5196,6 +5199,10 @@ packages:
|
||||
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
|
||||
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:
|
||||
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
|
||||
|
||||
@ -5509,6 +5516,10 @@ packages:
|
||||
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
merge-options@3.0.4:
|
||||
resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
merge-stream@2.0.0:
|
||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||
|
||||
@ -11509,6 +11520,8 @@ snapshots:
|
||||
|
||||
is-obj@2.0.0: {}
|
||||
|
||||
is-plain-obj@2.1.0: {}
|
||||
|
||||
is-potential-custom-element-name@1.0.1: {}
|
||||
|
||||
is-reference@3.0.3:
|
||||
@ -11842,6 +11855,10 @@ snapshots:
|
||||
|
||||
meow@13.2.0: {}
|
||||
|
||||
merge-options@3.0.4:
|
||||
dependencies:
|
||||
is-plain-obj: 2.1.0
|
||||
|
||||
merge-stream@2.0.0: {}
|
||||
|
||||
merge2@1.4.1: {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user