@farris/cli 2.3.8 → 2.3.11
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/lib/commands/add-app.js +5 -5
- package/lib/commands/add-lib.js +5 -5
- package/lib/commands/add-micro.js +11 -11
- package/lib/commands/add-project.js +196 -196
- package/lib/commands/add-project.js.map +1 -1
- package/lib/commands/build-components.js +60 -60
- package/lib/commands/build-components.js.map +1 -1
- package/lib/commands/build-css.js +38 -38
- package/lib/commands/build-css.js.map +1 -1
- package/lib/commands/build-lib.js +30 -30
- package/lib/commands/build.js +19 -19
- package/lib/commands/build.js.map +1 -1
- package/lib/commands/create-app-options.js +85 -85
- package/lib/commands/create-app-options.js.map +1 -1
- package/lib/commands/create-app.js +131 -131
- package/lib/commands/create-app.js.map +1 -1
- package/lib/commands/create-options.js +69 -58
- package/lib/commands/create-options.js.map +1 -1
- package/lib/commands/create.js +345 -341
- package/lib/commands/create.js.map +1 -1
- package/lib/commands/dev-serve.js +18 -18
- package/lib/commands/extract-i18n.js +74 -74
- package/lib/commands/extract-i18n.js.map +1 -1
- package/lib/commands/generate/api.js +124 -124
- package/lib/commands/generate/api.js.map +1 -1
- package/lib/commands/generate/common.js +101 -101
- package/lib/commands/generate/common.js.map +1 -1
- package/lib/commands/generate/component.js +156 -156
- package/lib/commands/generate/component.js.map +1 -1
- package/lib/commands/generate/view.js +168 -168
- package/lib/commands/generate/view.js.map +1 -1
- package/lib/commands/preview-serve.js +16 -16
- package/lib/commands/workspace/add-app.js +15 -15
- package/lib/commands/workspace/add-app.js.map +1 -1
- package/lib/commands/workspace/create.js +62 -62
- package/lib/commands/workspace/create.js.map +1 -1
- package/lib/commands/workspace/inspect.js +30 -30
- package/lib/commands/workspace/inspect.js.map +1 -1
- package/lib/commands/workspace/verify.js +38 -38
- package/lib/commands/workspace/verify.js.map +1 -1
- package/lib/common/agents-doc.js +33 -33
- package/lib/common/agents-doc.js.map +1 -1
- package/lib/common/apply-catalog-deps.js +15 -15
- package/lib/common/apply-catalog-deps.js.map +1 -1
- package/lib/common/component-file-name.js +3 -3
- package/lib/common/constant.js +85 -84
- package/lib/common/constant.js.map +1 -1
- package/lib/common/create-app-target.js +46 -46
- package/lib/common/create-app-target.js.map +1 -1
- package/lib/common/generate-app.js +106 -106
- package/lib/common/generate-app.js.map +1 -1
- package/lib/common/get-dependencies.js +9 -9
- package/lib/common/get-farris-config.js +25 -25
- package/lib/common/get-farris-config.js.map +1 -1
- package/lib/common/get-version.js +6 -6
- package/lib/common/get-vite-config.js +192 -192
- package/lib/common/get-vite-config.js.map +1 -1
- package/lib/common/lib-package-exports.js +24 -24
- package/lib/common/lib-package-exports.js.map +1 -1
- package/lib/common/list-lib-components.js +23 -23
- package/lib/common/list-lib-components.js.map +1 -1
- package/lib/common/output.js +164 -164
- package/lib/common/output.js.map +1 -1
- package/lib/common/project-layout.js +155 -155
- package/lib/common/project-layout.js.map +1 -1
- package/lib/common/safety.js +172 -172
- package/lib/common/safety.js.map +1 -1
- package/lib/common/template-manifest.js +18 -18
- package/lib/common/template-manifest.js.map +1 -1
- package/lib/common/template-renderer.js +114 -114
- package/lib/common/template-renderer.js.map +1 -1
- package/lib/common/transaction.js +83 -83
- package/lib/common/transaction.js.map +1 -1
- package/lib/common/verifier.js +187 -187
- package/lib/common/verifier.js.map +1 -1
- package/lib/common/workspace-contract.js +195 -191
- package/lib/common/workspace-contract.js.map +1 -1
- package/lib/config/vite-app.js +13 -13
- package/lib/config/vite-common.js +20 -20
- package/lib/config/vite-common.js.map +1 -1
- package/lib/config/vite-component.js +32 -32
- package/lib/config/vite-component.js.map +1 -1
- package/lib/config/vite-lib.js +26 -26
- package/lib/index.js +280 -261
- package/lib/index.js.map +1 -1
- package/lib/plugins/create-app-package-json.js +23 -23
- package/lib/plugins/create-component-style.js +44 -44
- package/lib/plugins/create-package-json.js +48 -48
- package/lib/plugins/create-package-json.js.map +1 -1
- package/lib/plugins/dts.js +8 -8
- package/lib/plugins/html-system.js +9 -9
- package/lib/plugins/mock.js +240 -292
- package/lib/plugins/mock.js.map +1 -1
- package/lib/plugins/msw-adapter.js +141 -0
- package/lib/plugins/msw-adapter.js.map +1 -0
- package/lib/plugins/replace.js +17 -17
- package/lib/plugins/systemjs-bundle.js +15 -15
- package/lib/plugins/systemjs-bundle.js.map +1 -1
- package/package.json +93 -87
- package/templates/create/AGENTS.md +4 -3
- package/templates/lib/.gitignore.tpl +1 -0
- package/templates/micro/.gitignore.tpl +1 -0
- package/templates/micro/mock/README.md +39 -26
- package/templates/micro/mock/tsconfig.json +10 -0
- package/templates/micro/package.json +1 -0
- package/templates/mobile/.gitignore.tpl +1 -0
- package/templates/mobile/mock/README.md +39 -26
- package/templates/mobile/mock/tsconfig.json +10 -0
- package/templates/mobile/package.json +1 -0
- package/templates/web/.gitignore.tpl +1 -0
- package/templates/web/mock/README.md +39 -26
- package/templates/web/mock/tsconfig.json +10 -0
- package/templates/web/package.json +1 -0
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { build } from "esbuild";
|
|
2
|
-
import { sassPlugin } from 'esbuild-sass-plugin';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { CWD } from "../common/constant.js";
|
|
5
|
-
import ora from "ora";
|
|
6
|
-
const replaceUrl = (source, pathname, entry) => {
|
|
7
|
-
const basedir = path.dirname(pathname);
|
|
8
|
-
const entrydir = path.resolve(CWD, path.dirname(entry));
|
|
9
|
-
const relativedir = path.relative(entrydir, basedir);
|
|
10
|
-
const regExp = /(url\(['"]?)(\.\.?\/[^'")]+['"]?)(\))/g;
|
|
11
|
-
return source.replace(regExp, (substring, ...args) => `url(./${path.join(relativedir, args[1]).replaceAll('\\', '/')})`);
|
|
12
|
-
};
|
|
13
|
-
export async function buildCss(options) {
|
|
14
|
-
const { entry, outfile, minify = false, showSpinner = true } = options;
|
|
15
|
-
const spinner = ora(`build css begin`).start();
|
|
16
|
-
spinner.text = `building css`;
|
|
17
|
-
if (!showSpinner) {
|
|
18
|
-
spinner.stop();
|
|
19
|
-
}
|
|
20
|
-
await build({
|
|
21
|
-
entryPoints: [entry],
|
|
22
|
-
outfile,
|
|
23
|
-
minify,
|
|
24
|
-
bundle: true,
|
|
25
|
-
logLevel: 'error',
|
|
26
|
-
plugins: [sassPlugin({
|
|
27
|
-
precompile(source, pathname) {
|
|
28
|
-
return replaceUrl(source, pathname, entry);
|
|
29
|
-
}
|
|
30
|
-
})],
|
|
31
|
-
loader: {
|
|
32
|
-
'.ttf': 'dataurl'
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
if (showSpinner) {
|
|
36
|
-
spinner.succeed(`build css success`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
1
|
+
import { build } from "esbuild";
|
|
2
|
+
import { sassPlugin } from 'esbuild-sass-plugin';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { CWD } from "../common/constant.js";
|
|
5
|
+
import ora from "ora";
|
|
6
|
+
const replaceUrl = (source, pathname, entry) => {
|
|
7
|
+
const basedir = path.dirname(pathname);
|
|
8
|
+
const entrydir = path.resolve(CWD, path.dirname(entry));
|
|
9
|
+
const relativedir = path.relative(entrydir, basedir);
|
|
10
|
+
const regExp = /(url\(['"]?)(\.\.?\/[^'")]+['"]?)(\))/g;
|
|
11
|
+
return source.replace(regExp, (substring, ...args) => `url(./${path.join(relativedir, args[1]).replaceAll('\\', '/')})`);
|
|
12
|
+
};
|
|
13
|
+
export async function buildCss(options) {
|
|
14
|
+
const { entry, outfile, minify = false, showSpinner = true } = options;
|
|
15
|
+
const spinner = ora(`build css begin`).start();
|
|
16
|
+
spinner.text = `building css`;
|
|
17
|
+
if (!showSpinner) {
|
|
18
|
+
spinner.stop();
|
|
19
|
+
}
|
|
20
|
+
await build({
|
|
21
|
+
entryPoints: [entry],
|
|
22
|
+
outfile,
|
|
23
|
+
minify,
|
|
24
|
+
bundle: true,
|
|
25
|
+
logLevel: 'error',
|
|
26
|
+
plugins: [sassPlugin({
|
|
27
|
+
precompile(source, pathname) {
|
|
28
|
+
return replaceUrl(source, pathname, entry);
|
|
29
|
+
}
|
|
30
|
+
})],
|
|
31
|
+
loader: {
|
|
32
|
+
'.ttf': 'dataurl'
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
if (showSpinner) {
|
|
36
|
+
spinner.succeed(`build css success`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
39
|
//# sourceMappingURL=build-css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-css.js","sourceRoot":"","sources":["../../src/commands/build-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAa,EAAC,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,wCAAwC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,EAAC,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1H,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAY;IACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvE,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9B,IAAG,CAAC,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"build-css.js","sourceRoot":"","sources":["../../src/commands/build-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAa,EAAC,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,wCAAwC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,EAAC,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1H,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAY;IACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvE,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9B,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAGD,MAAM,KAAK,CAAC;QACV,WAAW,EAAE,CAAC,KAAK,CAAC;QACpB,OAAO;QACP,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC;gBACnB,UAAU,CAAC,MAAM,EAAE,QAAQ;oBACzB,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;aACF,CAAC,CAAC;QACH,MAAM,EAAE;YACN,MAAM,EAAE,SAAS;SAClB;KACF,CAAC,CAAC;IAEH,IAAG,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import ora from 'ora';
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
import { buildCommon } from "./build.js";
|
|
4
|
-
import { generateTypes } from "../plugins/dts.js";
|
|
5
|
-
import { createPackageJson } from '../plugins/create-package-json.js';
|
|
6
|
-
import { getFarrisConfigAsync } from '../common/get-farris-config.js';
|
|
7
|
-
import { CWD } from '../common/constant.js';
|
|
8
|
-
export async function buildLib(options) {
|
|
9
|
-
const { dts = true, emitPackage } = options;
|
|
10
|
-
const farrisConfig = await getFarrisConfigAsync(options.configFile);
|
|
11
|
-
const outDir = farrisConfig.outDir || 'dist';
|
|
12
|
-
const typesDir = resolve(CWD, outDir, 'types');
|
|
13
|
-
const config = {
|
|
14
|
-
publicDir: '',
|
|
15
|
-
build: {
|
|
16
|
-
// 干净构建:产物目录不接受上一版的残留文件(设计文档 §7.4)。
|
|
17
|
-
// lib 的 outDir 位于 vite root 内,显式声明后不依赖 vite 的默认值。
|
|
18
|
-
emptyOutDir: true
|
|
19
|
-
},
|
|
20
|
-
plugins: [
|
|
21
|
-
dts && generateTypes('./components', typesDir),
|
|
22
|
-
emitPackage && createPackageJson()
|
|
23
|
-
]
|
|
24
|
-
};
|
|
25
|
-
const spinner = ora(`build lib begin`).start();
|
|
26
|
-
spinner.text = `building lib`;
|
|
27
|
-
await buildCommon({ ...options, config, type: 'lib' });
|
|
28
|
-
spinner.succeed(`build lib success`);
|
|
29
|
-
}
|
|
30
|
-
;
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { buildCommon } from "./build.js";
|
|
4
|
+
import { generateTypes } from "../plugins/dts.js";
|
|
5
|
+
import { createPackageJson } from '../plugins/create-package-json.js';
|
|
6
|
+
import { getFarrisConfigAsync } from '../common/get-farris-config.js';
|
|
7
|
+
import { CWD } from '../common/constant.js';
|
|
8
|
+
export async function buildLib(options) {
|
|
9
|
+
const { dts = true, emitPackage } = options;
|
|
10
|
+
const farrisConfig = await getFarrisConfigAsync(options.configFile);
|
|
11
|
+
const outDir = farrisConfig.outDir || 'dist';
|
|
12
|
+
const typesDir = resolve(CWD, outDir, 'types');
|
|
13
|
+
const config = {
|
|
14
|
+
publicDir: '',
|
|
15
|
+
build: {
|
|
16
|
+
// 干净构建:产物目录不接受上一版的残留文件(设计文档 §7.4)。
|
|
17
|
+
// lib 的 outDir 位于 vite root 内,显式声明后不依赖 vite 的默认值。
|
|
18
|
+
emptyOutDir: true
|
|
19
|
+
},
|
|
20
|
+
plugins: [
|
|
21
|
+
dts && generateTypes('./components', typesDir),
|
|
22
|
+
emitPackage && createPackageJson()
|
|
23
|
+
]
|
|
24
|
+
};
|
|
25
|
+
const spinner = ora(`build lib begin`).start();
|
|
26
|
+
spinner.text = `building lib`;
|
|
27
|
+
await buildCommon({ ...options, config, type: 'lib' });
|
|
28
|
+
spinner.succeed(`build lib success`);
|
|
29
|
+
}
|
|
30
|
+
;
|
|
31
31
|
//# sourceMappingURL=build-lib.js.map
|
package/lib/commands/build.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { build, mergeConfig, loadConfigFromFile } from 'vite';
|
|
2
|
-
import { getViteConfig } from '../common/get-vite-config.js';
|
|
3
|
-
import { createAppPackageJson } from '../plugins/create-app-package-json.js';
|
|
4
|
-
export async function buildCommon(options, loadFile = true) {
|
|
5
|
-
const { configFile, viteConfigFile, config = {}, type, base, mode = 'production', emitPackage, format, outDir } = options;
|
|
6
|
-
if (!loadFile) {
|
|
7
|
-
await build(config);
|
|
8
|
-
return config;
|
|
9
|
-
}
|
|
10
|
-
const viteConfig = await loadConfigFromFile({ command: 'build', mode }, viteConfigFile);
|
|
11
|
-
const defaultConfig = await getViteConfig(type, configFile, { base, mode, format, outDir });
|
|
12
|
-
const plugins = [...(config.plugins ?? [])];
|
|
13
|
-
if (emitPackage && type === 'app') {
|
|
14
|
-
plugins.push(createAppPackageJson());
|
|
15
|
-
}
|
|
16
|
-
const finalConfig = mergeConfig(mergeConfig(defaultConfig, viteConfigFile && viteConfig?.config ? viteConfig.config : {}), { ...config, plugins });
|
|
17
|
-
await build(finalConfig);
|
|
18
|
-
return finalConfig;
|
|
19
|
-
}
|
|
1
|
+
import { build, mergeConfig, loadConfigFromFile } from 'vite';
|
|
2
|
+
import { getViteConfig } from '../common/get-vite-config.js';
|
|
3
|
+
import { createAppPackageJson } from '../plugins/create-app-package-json.js';
|
|
4
|
+
export async function buildCommon(options, loadFile = true) {
|
|
5
|
+
const { configFile, viteConfigFile, config = {}, type, base, mode = 'production', emitPackage, format, outDir } = options;
|
|
6
|
+
if (!loadFile) {
|
|
7
|
+
await build(config);
|
|
8
|
+
return config;
|
|
9
|
+
}
|
|
10
|
+
const viteConfig = await loadConfigFromFile({ command: 'build', mode }, viteConfigFile);
|
|
11
|
+
const defaultConfig = await getViteConfig(type, configFile, { base, mode, format, outDir });
|
|
12
|
+
const plugins = [...(config.plugins ?? [])];
|
|
13
|
+
if (emitPackage && type === 'app') {
|
|
14
|
+
plugins.push(createAppPackageJson());
|
|
15
|
+
}
|
|
16
|
+
const finalConfig = mergeConfig(mergeConfig(defaultConfig, viteConfigFile && viteConfig?.config ? viteConfig.config : {}), { ...config, plugins });
|
|
17
|
+
await build(finalConfig);
|
|
18
|
+
return finalConfig;
|
|
19
|
+
}
|
|
20
20
|
//# sourceMappingURL=build.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAiB7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,QAAQ,GAAG,IAAI;IAC5E,MAAM,EACJ,UAAU,EACV,cAAc,EACd,MAAM,GAAG,EAAE,EACX,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,YAAY,EACnB,WAAW,EACX,MAAM,EACN,MAAM,EACP,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAiB7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,QAAQ,GAAG,IAAI;IAC5E,MAAM,EACJ,UAAU,EACV,cAAc,EACd,MAAM,GAAG,EAAE,EACX,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,YAAY,EACnB,WAAW,EACX,MAAM,EACN,MAAM,EACP,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;IAExF,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAE5F,MAAM,OAAO,GAAU,CAAC,GAAG,CAAE,MAAM,CAAC,OAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAC7B,WAAW,CAAC,aAAa,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EACzF,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CACvB,CAAC;IAEF,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
import { ALLOWED_APP_FORMATS, ExitCode } from '../common/constant.js';
|
|
4
|
-
import { assertTargetInsideCwd, CreateAppError, resolvePackageName } from '../common/create-app-target.js';
|
|
5
|
-
export { assertTargetInsideCwd, CreateAppError, resolvePackageName };
|
|
6
|
-
export { ALLOWED_APP_FORMATS };
|
|
7
|
-
export const ALLOWED_TYPES = ['app', 'lib', 'micro'];
|
|
8
|
-
export const ALLOWED_PLATFORMS = ['web', 'mobile'];
|
|
9
|
-
/** lib 产物格式 */
|
|
10
|
-
export const ALLOWED_FORMATS = ['es', 'cjs', 'umd', 'systemjs'];
|
|
11
|
-
export const DEFAULT_NAME = 'my-project';
|
|
12
|
-
export const DEFAULT_LIB_FORMATS = ['es', 'cjs', 'umd', 'systemjs'];
|
|
13
|
-
export const DEFAULT_APP_FORMAT = 'es';
|
|
14
|
-
/** 微应用交付:IBP 单文件产物 */
|
|
15
|
-
export const DEFAULT_MICRO_FORMAT = 'iife';
|
|
16
|
-
export const DEFAULT_PLATFORM = 'web';
|
|
17
|
-
function assertAllowed(kind, value, allowed) {
|
|
18
|
-
if (!allowed.includes(value)) {
|
|
19
|
-
throw new CreateAppError(`非法的 ${kind}: ${value},允许值为 ${allowed.join(', ')}`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
export function parseFormatsFlag(raw) {
|
|
23
|
-
if (raw === undefined) {
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
const parts = raw.split(',').map((part) => part.trim());
|
|
27
|
-
if (parts.length === 0 || parts.some((part) => part === '')) {
|
|
28
|
-
throw new CreateAppError('非法的 --formats: 不能为空');
|
|
29
|
-
}
|
|
30
|
-
parts.forEach((part) => assertAllowed('--formats', part, ALLOWED_FORMATS));
|
|
31
|
-
return parts;
|
|
32
|
-
}
|
|
33
|
-
export function validateCliInput(input) {
|
|
34
|
-
if (input.type !== undefined) {
|
|
35
|
-
assertAllowed('--type', input.type, ALLOWED_TYPES);
|
|
36
|
-
}
|
|
37
|
-
if (input.platform !== undefined) {
|
|
38
|
-
assertAllowed('--platform', input.platform, ALLOWED_PLATFORMS);
|
|
39
|
-
}
|
|
40
|
-
if (input.format !== undefined) {
|
|
41
|
-
assertAllowed('--format', input.format, ALLOWED_APP_FORMATS);
|
|
42
|
-
}
|
|
43
|
-
if (input.formats !== undefined) {
|
|
44
|
-
parseFormatsFlag(input.formats);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export function resolveNonInteractiveOptions(input) {
|
|
48
|
-
validateCliInput(input);
|
|
49
|
-
if (!input.type) {
|
|
50
|
-
throw new CreateAppError('--type 在使用 -y / --yes 或 --json 时必填');
|
|
51
|
-
}
|
|
52
|
-
const name = input.name && input.name.trim() !== '' ? input.name : DEFAULT_NAME;
|
|
53
|
-
assertTargetInsideCwd(name);
|
|
54
|
-
const packageName = resolvePackageName(name);
|
|
55
|
-
if (input.type === 'lib') {
|
|
56
|
-
return {
|
|
57
|
-
name,
|
|
58
|
-
packageName,
|
|
59
|
-
type: 'lib',
|
|
60
|
-
formats: parseFormatsFlag(input.formats) ?? [...DEFAULT_LIB_FORMATS]
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
if (input.type === 'micro') {
|
|
64
|
-
return {
|
|
65
|
-
name,
|
|
66
|
-
packageName,
|
|
67
|
-
type: 'micro',
|
|
68
|
-
platform: input.platform ?? DEFAULT_PLATFORM,
|
|
69
|
-
format: input.format ?? DEFAULT_MICRO_FORMAT
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
name,
|
|
74
|
-
packageName,
|
|
75
|
-
type: 'app',
|
|
76
|
-
platform: input.platform ?? DEFAULT_PLATFORM,
|
|
77
|
-
format: input.format ?? DEFAULT_APP_FORMAT
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
export function assertTargetDirectoryFree(name, cwd = process.cwd()) {
|
|
81
|
-
assertTargetInsideCwd(name, cwd);
|
|
82
|
-
if (existsSync(resolve(cwd, name))) {
|
|
83
|
-
throw new CreateAppError(`目标目录已存在: ${name}`, ExitCode.TARGET_CONFLICT);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { ALLOWED_APP_FORMATS, ExitCode } from '../common/constant.js';
|
|
4
|
+
import { assertTargetInsideCwd, CreateAppError, resolvePackageName } from '../common/create-app-target.js';
|
|
5
|
+
export { assertTargetInsideCwd, CreateAppError, resolvePackageName };
|
|
6
|
+
export { ALLOWED_APP_FORMATS };
|
|
7
|
+
export const ALLOWED_TYPES = ['app', 'lib', 'micro'];
|
|
8
|
+
export const ALLOWED_PLATFORMS = ['web', 'mobile'];
|
|
9
|
+
/** lib 产物格式 */
|
|
10
|
+
export const ALLOWED_FORMATS = ['es', 'cjs', 'umd', 'systemjs'];
|
|
11
|
+
export const DEFAULT_NAME = 'my-project';
|
|
12
|
+
export const DEFAULT_LIB_FORMATS = ['es', 'cjs', 'umd', 'systemjs'];
|
|
13
|
+
export const DEFAULT_APP_FORMAT = 'es';
|
|
14
|
+
/** 微应用交付:IBP 单文件产物 */
|
|
15
|
+
export const DEFAULT_MICRO_FORMAT = 'iife';
|
|
16
|
+
export const DEFAULT_PLATFORM = 'web';
|
|
17
|
+
function assertAllowed(kind, value, allowed) {
|
|
18
|
+
if (!allowed.includes(value)) {
|
|
19
|
+
throw new CreateAppError(`非法的 ${kind}: ${value},允许值为 ${allowed.join(', ')}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function parseFormatsFlag(raw) {
|
|
23
|
+
if (raw === undefined) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const parts = raw.split(',').map((part) => part.trim());
|
|
27
|
+
if (parts.length === 0 || parts.some((part) => part === '')) {
|
|
28
|
+
throw new CreateAppError('非法的 --formats: 不能为空');
|
|
29
|
+
}
|
|
30
|
+
parts.forEach((part) => assertAllowed('--formats', part, ALLOWED_FORMATS));
|
|
31
|
+
return parts;
|
|
32
|
+
}
|
|
33
|
+
export function validateCliInput(input) {
|
|
34
|
+
if (input.type !== undefined) {
|
|
35
|
+
assertAllowed('--type', input.type, ALLOWED_TYPES);
|
|
36
|
+
}
|
|
37
|
+
if (input.platform !== undefined) {
|
|
38
|
+
assertAllowed('--platform', input.platform, ALLOWED_PLATFORMS);
|
|
39
|
+
}
|
|
40
|
+
if (input.format !== undefined) {
|
|
41
|
+
assertAllowed('--format', input.format, ALLOWED_APP_FORMATS);
|
|
42
|
+
}
|
|
43
|
+
if (input.formats !== undefined) {
|
|
44
|
+
parseFormatsFlag(input.formats);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function resolveNonInteractiveOptions(input) {
|
|
48
|
+
validateCliInput(input);
|
|
49
|
+
if (!input.type) {
|
|
50
|
+
throw new CreateAppError('--type 在使用 -y / --yes 或 --json 时必填');
|
|
51
|
+
}
|
|
52
|
+
const name = input.name && input.name.trim() !== '' ? input.name : DEFAULT_NAME;
|
|
53
|
+
assertTargetInsideCwd(name);
|
|
54
|
+
const packageName = resolvePackageName(name);
|
|
55
|
+
if (input.type === 'lib') {
|
|
56
|
+
return {
|
|
57
|
+
name,
|
|
58
|
+
packageName,
|
|
59
|
+
type: 'lib',
|
|
60
|
+
formats: parseFormatsFlag(input.formats) ?? [...DEFAULT_LIB_FORMATS]
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (input.type === 'micro') {
|
|
64
|
+
return {
|
|
65
|
+
name,
|
|
66
|
+
packageName,
|
|
67
|
+
type: 'micro',
|
|
68
|
+
platform: input.platform ?? DEFAULT_PLATFORM,
|
|
69
|
+
format: input.format ?? DEFAULT_MICRO_FORMAT
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
name,
|
|
74
|
+
packageName,
|
|
75
|
+
type: 'app',
|
|
76
|
+
platform: input.platform ?? DEFAULT_PLATFORM,
|
|
77
|
+
format: input.format ?? DEFAULT_APP_FORMAT
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function assertTargetDirectoryFree(name, cwd = process.cwd()) {
|
|
81
|
+
assertTargetInsideCwd(name, cwd);
|
|
82
|
+
if (existsSync(resolve(cwd, name))) {
|
|
83
|
+
throw new CreateAppError(`目标目录已存在: ${name}`, ExitCode.TARGET_CONFLICT);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
86
|
//# sourceMappingURL=create-app-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-app-options.js","sourceRoot":"","sources":["../../src/commands/create-app-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAU,CAAC;AAC5D,eAAe;AACf,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAU,CAAC;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,sBAAsB;AACtB,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAYtC,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,OAA0B;IAC5E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"create-app-options.js","sourceRoot":"","sources":["../../src/commands/create-app-options.ts"],"names":[],"mappings":"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"}
|