@farris/cli 2.2.0-beta.1 → 2.2.0

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.
Files changed (112) hide show
  1. package/bin/index.js +1 -1
  2. package/lib/commands/build-components.js +48 -48
  3. package/lib/commands/build-components.js.map +1 -1
  4. package/lib/commands/build-css.js +38 -38
  5. package/lib/commands/build-css.js.map +1 -1
  6. package/lib/commands/build-lib.js +25 -25
  7. package/lib/commands/build.js +14 -15
  8. package/lib/commands/build.js.map +1 -1
  9. package/lib/commands/create-app-options.js +75 -0
  10. package/lib/commands/create-app-options.js.map +1 -0
  11. package/lib/commands/create-app.js +123 -54
  12. package/lib/commands/create-app.js.map +1 -1
  13. package/lib/commands/dev-serve.js +18 -18
  14. package/lib/commands/extract-i18n.js +74 -74
  15. package/lib/commands/extract-i18n.js.map +1 -1
  16. package/lib/commands/generate/api.js +188 -0
  17. package/lib/commands/generate/api.js.map +1 -0
  18. package/lib/commands/generate/common.js +101 -0
  19. package/lib/commands/generate/common.js.map +1 -0
  20. package/lib/commands/generate/component.js +164 -0
  21. package/lib/commands/generate/component.js.map +1 -0
  22. package/lib/commands/generate/view.js +198 -0
  23. package/lib/commands/generate/view.js.map +1 -0
  24. package/lib/commands/preview-serve.js +16 -16
  25. package/lib/commands/workspace/add-app.js +181 -0
  26. package/lib/commands/workspace/add-app.js.map +1 -0
  27. package/lib/commands/workspace/create.js +380 -0
  28. package/lib/commands/workspace/create.js.map +1 -0
  29. package/lib/commands/workspace/inspect.js +31 -0
  30. package/lib/commands/workspace/inspect.js.map +1 -0
  31. package/lib/commands/workspace/verify.js +39 -0
  32. package/lib/commands/workspace/verify.js.map +1 -0
  33. package/lib/common/component-file-name.js +3 -3
  34. package/lib/common/constant.js +64 -22
  35. package/lib/common/constant.js.map +1 -1
  36. package/lib/common/generate-app.js +54 -51
  37. package/lib/common/generate-app.js.map +1 -1
  38. package/lib/common/get-dependencies.js +9 -9
  39. package/lib/common/get-farris-config.js +25 -25
  40. package/lib/common/get-farris-config.js.map +1 -1
  41. package/lib/common/get-version.js +6 -6
  42. package/lib/common/get-vite-config.js +106 -49
  43. package/lib/common/get-vite-config.js.map +1 -1
  44. package/lib/common/lib-package-exports.js +20 -20
  45. package/lib/common/list-lib-components.js +23 -23
  46. package/lib/common/list-lib-components.js.map +1 -1
  47. package/lib/common/output.js +95 -0
  48. package/lib/common/output.js.map +1 -0
  49. package/lib/common/project-package-name.js +5 -0
  50. package/lib/common/project-package-name.js.map +1 -0
  51. package/lib/common/safety.js +172 -0
  52. package/lib/common/safety.js.map +1 -0
  53. package/lib/common/template-manifest.js +16 -16
  54. package/lib/common/template-manifest.js.map +1 -1
  55. package/lib/common/template-renderer.js +115 -0
  56. package/lib/common/template-renderer.js.map +1 -0
  57. package/lib/common/transaction.js +84 -0
  58. package/lib/common/transaction.js.map +1 -0
  59. package/lib/common/verifier.js +151 -0
  60. package/lib/common/verifier.js.map +1 -0
  61. package/lib/config/vite-app.js +13 -13
  62. package/lib/config/vite-common.js +20 -20
  63. package/lib/config/vite-common.js.map +1 -1
  64. package/lib/config/vite-component.js +32 -32
  65. package/lib/config/vite-component.js.map +1 -1
  66. package/lib/config/vite-lib.js +26 -26
  67. package/lib/index.js +185 -87
  68. package/lib/index.js.map +1 -1
  69. package/lib/plugins/create-component-style.js +44 -44
  70. package/lib/plugins/create-package-json.js +48 -48
  71. package/lib/plugins/create-package-json.js.map +1 -1
  72. package/lib/plugins/dts.js +8 -8
  73. package/lib/plugins/html-system.js +9 -9
  74. package/lib/plugins/replace.js +17 -17
  75. package/lib/plugins/systemjs-bundle.js +15 -15
  76. package/lib/plugins/systemjs-bundle.js.map +1 -1
  77. package/package.json +12 -9
  78. package/templates/lib/.gitlab-ci.yml +85 -0
  79. package/templates/lib/README.md +1 -15
  80. package/templates/lib/components/button/button.spec.ts +8 -0
  81. package/templates/lib/index.html +12 -0
  82. package/templates/lib/package.json +6 -1
  83. package/templates/lib/src/App.vue +7 -0
  84. package/templates/lib/src/main.ts +4 -0
  85. package/templates/lib/vitest.config.ts +9 -0
  86. package/templates/mobile/.gitlab-ci.yml +88 -0
  87. package/templates/mobile/package.json +5 -1
  88. package/templates/mobile/project.json +4 -0
  89. package/templates/mobile/src/components/TheButton.spec.ts +8 -0
  90. package/templates/mobile/vitest.config.ts +9 -0
  91. package/templates/web/.gitlab-ci.yml +88 -0
  92. package/templates/web/package.json +5 -1
  93. package/templates/web/project.json +4 -0
  94. package/templates/web/src/components/TheButton.spec.ts +8 -0
  95. package/templates/web/vitest.config.ts +9 -0
  96. package/templates/workspace/app/farris.config.mjs +13 -0
  97. package/templates/workspace/app/index.html +12 -0
  98. package/templates/workspace/app/package.json +22 -0
  99. package/templates/workspace/app/src/App.tsx +11 -0
  100. package/templates/workspace/app/src/locales/index.ts +5 -0
  101. package/templates/workspace/app/src/locales/zh-CN.json +1 -0
  102. package/templates/workspace/app/src/main.ts +12 -0
  103. package/templates/workspace/app/src/router/index.ts +16 -0
  104. package/templates/workspace/app/src/styles/index.css +0 -0
  105. package/templates/workspace/app/src/styles/index.scss +0 -0
  106. package/templates/workspace/app/src/views/home/composables/use-home.ts +7 -0
  107. package/templates/workspace/app/src/views/home/home.component.tsx +15 -0
  108. package/templates/workspace/app/src/views/home/index.ts +4 -0
  109. package/templates/workspace/app/tsconfig.json +21 -0
  110. package/templates/workspace/root/README.md +28 -0
  111. package/templates/workspace/root/package.json +13 -0
  112. package/templates/workspace/root/pnpm-workspace.yaml +12 -0
package/bin/index.js CHANGED
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  import '../lib/index.js';
@@ -1,49 +1,49 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
- import { resolve } from 'node:path';
3
- import ora from 'ora';
4
- import { buildCommon } from './build.js';
5
- import { buildCss } from './build-css.js';
6
- import { CWD } from '../common/constant.js';
7
- import { getFarrisConfigAsync } from '../common/get-farris-config.js';
8
- import { listLibComponents } from '../common/list-lib-components.js';
9
- export async function buildComponents(options) {
10
- const farris = await getFarrisConfigAsync(options.configFile);
11
- const names = listLibComponents(process.cwd(), farris.excludeComponents);
12
- if (names.length === 0) {
13
- throw new Error('未找到可构建的组件(components/*/index.ts)');
14
- }
15
- const componentOutDir = farris.componentOutDir || './package/components';
16
- const outDir = farris.outDir || 'lib';
17
- const entry = Object.fromEntries(names.map((name) => [name, resolve(CWD, 'components', name, 'index.ts')]));
18
- const spinner = ora('build components begin').start();
19
- spinner.text = 'building components';
20
- await buildCommon({
21
- ...options,
22
- type: 'component',
23
- config: {
24
- publicDir: '',
25
- build: {
26
- emptyOutDir: false,
27
- lib: { entry },
28
- outDir: resolve(CWD, componentOutDir)
29
- }
30
- }
31
- });
32
- const cssFiles = [];
33
- for (const name of names) {
34
- const scss = resolve(CWD, 'components', name, 'src', `${name}.scss`);
35
- if (!existsSync(scss)) {
36
- continue;
37
- }
38
- const outfile = resolve(CWD, componentOutDir, name, 'index.css');
39
- await buildCss({ ...options, entry: scss, outfile, showSpinner: false });
40
- cssFiles.push(outfile);
41
- }
42
- if (cssFiles.length > 0) {
43
- const aggregateDir = resolve(CWD, outDir);
44
- mkdirSync(aggregateDir, { recursive: true });
45
- writeFileSync(resolve(aggregateDir, 'index.css'), cssFiles.map((file) => readFileSync(file, 'utf-8')).join('\n'));
46
- }
47
- spinner.succeed('build components success');
48
- }
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import ora from 'ora';
4
+ import { buildCommon } from './build.js';
5
+ import { buildCss } from './build-css.js';
6
+ import { CWD } from '../common/constant.js';
7
+ import { getFarrisConfigAsync } from '../common/get-farris-config.js';
8
+ import { listLibComponents } from '../common/list-lib-components.js';
9
+ export async function buildComponents(options) {
10
+ const farris = await getFarrisConfigAsync(options.configFile);
11
+ const names = listLibComponents(process.cwd(), farris.excludeComponents);
12
+ if (names.length === 0) {
13
+ throw new Error('未找到可构建的组件(components/*/index.ts)');
14
+ }
15
+ const componentOutDir = farris.componentOutDir || './package/components';
16
+ const outDir = farris.outDir || 'lib';
17
+ const entry = Object.fromEntries(names.map((name) => [name, resolve(CWD, 'components', name, 'index.ts')]));
18
+ const spinner = ora('build components begin').start();
19
+ spinner.text = 'building components';
20
+ await buildCommon({
21
+ ...options,
22
+ type: 'component',
23
+ config: {
24
+ publicDir: '',
25
+ build: {
26
+ emptyOutDir: false,
27
+ lib: { entry },
28
+ outDir: resolve(CWD, componentOutDir)
29
+ }
30
+ }
31
+ });
32
+ const cssFiles = [];
33
+ for (const name of names) {
34
+ const scss = resolve(CWD, 'components', name, 'src', `${name}.scss`);
35
+ if (!existsSync(scss)) {
36
+ continue;
37
+ }
38
+ const outfile = resolve(CWD, componentOutDir, name, 'index.css');
39
+ await buildCss({ ...options, entry: scss, outfile, showSpinner: false });
40
+ cssFiles.push(outfile);
41
+ }
42
+ if (cssFiles.length > 0) {
43
+ const aggregateDir = resolve(CWD, outDir);
44
+ mkdirSync(aggregateDir, { recursive: true });
45
+ writeFileSync(resolve(aggregateDir, 'index.css'), cssFiles.map((file) => readFileSync(file, 'utf-8')).join('\n'));
46
+ }
47
+ spinner.succeed('build components success');
48
+ }
49
49
  //# sourceMappingURL=build-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-components.js","sourceRoot":"","sources":["../../src/commands/build-components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-components.js","sourceRoot":"","sources":["../../src/commands/build-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAsB,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA2B;IAC/D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,sBAAsB,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAC1E,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAC;IAErC,MAAM,WAAW,CAAC;QAChB,GAAG,OAAO;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN,SAAS,EAAE,EAAE;YACb,KAAK,EAAE;gBACL,WAAW,EAAE,KAAK;gBAClB,GAAG,EAAE,EAAE,KAAK,EAAE;gBACd,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC;aACtC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,QAAQ,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,aAAa,CACX,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,EAClC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC"}
@@ -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;QACf,OAAO,CAAC,IAAI,EAAE,CAAC;KAChB;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;QACd,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;KACtC;AACH,CAAC"}
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,26 +1,26 @@
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 || 'lib';
12
- const typesDir = resolve(CWD, outDir, 'types');
13
- const config = {
14
- publicDir: '',
15
- plugins: [
16
- dts && generateTypes('./components', typesDir),
17
- emitPackage && createPackageJson()
18
- ]
19
- };
20
- const spinner = ora(`build lib begin`).start();
21
- spinner.text = `building lib`;
22
- await buildCommon({ ...options, config, type: 'lib' });
23
- spinner.succeed(`build lib success`);
24
- }
25
- ;
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 || 'lib';
12
+ const typesDir = resolve(CWD, outDir, 'types');
13
+ const config = {
14
+ publicDir: '',
15
+ plugins: [
16
+ dts && generateTypes('./components', typesDir),
17
+ emitPackage && createPackageJson()
18
+ ]
19
+ };
20
+ const spinner = ora(`build lib begin`).start();
21
+ spinner.text = `building lib`;
22
+ await buildCommon({ ...options, config, type: 'lib' });
23
+ spinner.succeed(`build lib success`);
24
+ }
25
+ ;
26
26
  //# sourceMappingURL=build-lib.js.map
@@ -1,16 +1,15 @@
1
- import { build, mergeConfig, loadConfigFromFile } from 'vite';
2
- import { getViteConfig } from '../common/get-vite-config.js';
3
- export async function buildCommon(options, loadFile = true) {
4
- const { configFile, viteConfigFile, config = {}, type } = options;
5
- if (!loadFile) {
6
- await build(config);
7
- return config;
8
- }
9
- const viteConfig = await loadConfigFromFile({ command: 'build', mode: 'production' }, viteConfigFile);
10
- const defaultConfig = await getViteConfig(type, configFile);
11
- const libConfig = mergeConfig(mergeConfig(defaultConfig, viteConfigFile && viteConfig?.config ? viteConfig.config : {}), config);
12
- await build(libConfig);
13
- return libConfig;
14
- }
15
- ;
1
+ import { build, mergeConfig, loadConfigFromFile } from 'vite';
2
+ import { getViteConfig } from '../common/get-vite-config.js';
3
+ export async function buildCommon(options, loadFile = true) {
4
+ const { configFile, viteConfigFile, config = {}, type, base, mode = 'production' } = options;
5
+ if (!loadFile) {
6
+ await build(config);
7
+ return config;
8
+ }
9
+ const viteConfig = await loadConfigFromFile({ command: 'build', mode }, viteConfigFile);
10
+ const defaultConfig = await getViteConfig(type, configFile, { base, mode });
11
+ const finalConfig = mergeConfig(mergeConfig(defaultConfig, viteConfigFile && viteConfig?.config ? viteConfig.config : {}), config);
12
+ await build(finalConfig);
13
+ return finalConfig;
14
+ }
16
15
  //# 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,EAAc,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAS7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,QAAQ,GAAG,IAAI;IAC5E,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAElE,IAAG,CAAC,QAAQ,EAAE;QACZ,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;KACf;IAED,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAC,EAAE,cAAc,CAAC,CAAC;IAEpG,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAE,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAEhI,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IAEvB,OAAO,SAAS,CAAC;AACnB,CAAC;AAAA,CAAC"}
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;AAW7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,QAAQ,GAAG,IAAI;IAC5E,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAE7F,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,CAAC,CAAC;IAE5E,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,MAAM,CACP,CAAC;IAEF,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { ExitCode } from '../common/constant.js';
4
+ import { toProjectPackageName } from '../common/project-package-name.js';
5
+ export { toProjectPackageName };
6
+ export const ALLOWED_TYPES = ['app', 'lib'];
7
+ export const ALLOWED_PLATFORMS = ['web', 'mobile'];
8
+ export const ALLOWED_FORMATS = ['es', 'umd', 'systemjs'];
9
+ export const DEFAULT_NAME = 'my-project';
10
+ export const DEFAULT_LIB_FORMATS = ['es', 'umd'];
11
+ export const DEFAULT_APP_FORMAT = 'es';
12
+ export const DEFAULT_PLATFORM = 'web';
13
+ export class CreateAppError extends Error {
14
+ constructor(message, exitCode = ExitCode.GENERAL_ERROR) {
15
+ super(message);
16
+ this.name = 'CreateAppError';
17
+ this.exitCode = exitCode;
18
+ }
19
+ }
20
+ function assertAllowed(kind, value, allowed) {
21
+ if (!allowed.includes(value)) {
22
+ throw new CreateAppError(`非法的 ${kind}: ${value},允许值为 ${allowed.join(', ')}`);
23
+ }
24
+ }
25
+ export function parseFormatsFlag(raw) {
26
+ if (raw === undefined) {
27
+ return undefined;
28
+ }
29
+ const parts = raw.split(',').map((part) => part.trim());
30
+ if (parts.length === 0 || parts.some((part) => part === '')) {
31
+ throw new CreateAppError('非法的 --formats: 不能为空');
32
+ }
33
+ parts.forEach((part) => assertAllowed('--formats', part, ALLOWED_FORMATS));
34
+ return parts;
35
+ }
36
+ export function validateCliInput(input) {
37
+ if (input.type !== undefined) {
38
+ assertAllowed('--type', input.type, ALLOWED_TYPES);
39
+ }
40
+ if (input.platform !== undefined) {
41
+ assertAllowed('--platform', input.platform, ALLOWED_PLATFORMS);
42
+ }
43
+ if (input.format !== undefined) {
44
+ assertAllowed('--format', input.format, ALLOWED_FORMATS);
45
+ }
46
+ if (input.formats !== undefined) {
47
+ parseFormatsFlag(input.formats);
48
+ }
49
+ }
50
+ export function resolveNonInteractiveOptions(input) {
51
+ validateCliInput(input);
52
+ if (!input.type) {
53
+ throw new CreateAppError('--type 在使用 -y / --yes 或 --json 时必填');
54
+ }
55
+ const name = input.name && input.name.trim() !== '' ? input.name : DEFAULT_NAME;
56
+ if (input.type === 'lib') {
57
+ return {
58
+ name,
59
+ type: 'lib',
60
+ formats: parseFormatsFlag(input.formats) ?? [...DEFAULT_LIB_FORMATS]
61
+ };
62
+ }
63
+ return {
64
+ name,
65
+ type: 'app',
66
+ platform: input.platform ?? DEFAULT_PLATFORM,
67
+ format: input.format ?? DEFAULT_APP_FORMAT
68
+ };
69
+ }
70
+ export function assertTargetDirectoryFree(name, cwd = process.cwd()) {
71
+ if (existsSync(resolve(cwd, name))) {
72
+ throw new CreateAppError(`目标目录已存在: ${name}`, ExitCode.TARGET_CONFLICT);
73
+ }
74
+ }
75
+ //# sourceMappingURL=create-app-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app-options.js","sourceRoot":"","sources":["../../src/commands/create-app-options.ts"],"names":[],"mappings":"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"}
@@ -1,55 +1,124 @@
1
- import { generateApp } from "../common/generate-app.js";
2
- import inquirer from "inquirer";
3
- const prompt = inquirer.createPromptModule();
4
- const questions = [
5
- {
6
- type: "input",
7
- name: "name",
8
- message: "What is your project name?",
9
- default: "my-project",
10
- },
11
- {
12
- type: "list",
13
- name: "type",
14
- message: "What type of project is this?",
15
- choices: ["app", "lib"],
16
- },
17
- {
18
- type: "list",
19
- name: "platform",
20
- message: "What platform of project is this?",
21
- choices: ["web", "mobile"],
22
- when: (response) => {
23
- const { type } = response;
24
- return type === 'app';
25
- }
26
- },
27
- {
28
- type: "checkbox",
29
- name: "formats",
30
- message: "What output format of project is this?",
31
- choices: ["es", "umd", "systemjs"],
32
- default: ["es", "umd"],
33
- when: (response) => {
34
- const { type } = response;
35
- return type === 'lib';
36
- }
37
- },
38
- {
39
- type: "list",
40
- name: "format",
41
- message: "What output format of project is this?",
42
- choices: ["es", "umd", "systemjs"],
43
- default: ["es"],
44
- when: (response) => {
45
- const { type } = response;
46
- return type === 'app';
47
- }
48
- }
49
- ];
50
- export async function createApp() {
51
- const response = await prompt(questions);
52
- generateApp(response);
53
- }
54
- ;
1
+ import { resolve } from 'node:path';
2
+ import inquirer from 'inquirer';
3
+ import { ExitCode } from '../common/constant.js';
4
+ import { generateApp } from '../common/generate-app.js';
5
+ import { fail, sendJson, setJsonMode } from '../common/output.js';
6
+ import { assertTargetDirectoryFree, CreateAppError, parseFormatsFlag, resolveNonInteractiveOptions, validateCliInput } from './create-app-options.js';
7
+ const prompt = inquirer.createPromptModule();
8
+ const questions = [
9
+ {
10
+ type: 'input',
11
+ name: 'name',
12
+ message: 'What is your project name?',
13
+ default: 'my-project'
14
+ },
15
+ {
16
+ type: 'list',
17
+ name: 'type',
18
+ message: 'What type of project is this?',
19
+ choices: ['app', 'lib']
20
+ },
21
+ {
22
+ type: 'list',
23
+ name: 'platform',
24
+ message: 'What platform of project is this?',
25
+ choices: ['web', 'mobile'],
26
+ when: (response) => response.type === 'app'
27
+ },
28
+ {
29
+ type: 'checkbox',
30
+ name: 'formats',
31
+ message: 'What output format of project is this?',
32
+ choices: ['es', 'umd', 'systemjs'],
33
+ default: ['es', 'umd'],
34
+ when: (response) => response.type === 'lib'
35
+ },
36
+ {
37
+ type: 'list',
38
+ name: 'format',
39
+ message: 'What output format of project is this?',
40
+ choices: ['es', 'umd', 'systemjs'],
41
+ default: 'es',
42
+ when: (response) => response.type === 'app'
43
+ }
44
+ ];
45
+ function toGenerateOptions(answers) {
46
+ if (answers.type === 'lib') {
47
+ return { name: answers.name, type: 'lib', formats: answers.formats };
48
+ }
49
+ return {
50
+ name: answers.name,
51
+ type: 'app',
52
+ platform: answers.platform,
53
+ format: answers.format
54
+ };
55
+ }
56
+ function initialAnswers(input) {
57
+ const initial = {};
58
+ if (input.name) {
59
+ initial.name = input.name;
60
+ }
61
+ if (input.type) {
62
+ initial.type = input.type;
63
+ }
64
+ if (input.platform) {
65
+ initial.platform = input.platform;
66
+ }
67
+ if (input.format) {
68
+ initial.format = input.format;
69
+ }
70
+ if (input.formats !== undefined) {
71
+ initial.formats = parseFormatsFlag(input.formats);
72
+ }
73
+ return initial;
74
+ }
75
+ function emitCreateAppJson(options) {
76
+ sendJson({
77
+ command: 'create-app',
78
+ ok: true,
79
+ name: options.name,
80
+ type: options.type,
81
+ ...(options.platform ? { platform: options.platform } : {}),
82
+ ...(options.format ? { format: options.format } : {}),
83
+ ...(options.formats ? { formats: options.formats } : {}),
84
+ target: resolve(process.cwd(), options.name)
85
+ });
86
+ }
87
+ function failCreateApp(error) {
88
+ const message = error instanceof Error ? error.message : String(error);
89
+ const exitCode = error instanceof CreateAppError ? error.exitCode : ExitCode.GENERAL_ERROR;
90
+ fail({
91
+ command: 'create-app',
92
+ error: message,
93
+ exitCode
94
+ });
95
+ }
96
+ export async function createApp(nameArg, commandOptions = {}) {
97
+ const isJson = !!commandOptions.json;
98
+ setJsonMode(isJson);
99
+ const input = { ...commandOptions, name: nameArg ?? commandOptions.name };
100
+ try {
101
+ validateCliInput(input);
102
+ const skipPrompt = !!(input.yes || input.json);
103
+ let options;
104
+ if (skipPrompt) {
105
+ options = resolveNonInteractiveOptions(input);
106
+ }
107
+ else {
108
+ const answers = await prompt(questions, initialAnswers(input));
109
+ options = toGenerateOptions(answers);
110
+ }
111
+ assertTargetDirectoryFree(options.name);
112
+ generateApp(options);
113
+ if (isJson) {
114
+ emitCreateAppJson(options);
115
+ }
116
+ }
117
+ catch (error) {
118
+ if (isJson) {
119
+ failCreateApp(error);
120
+ }
121
+ throw error;
122
+ }
123
+ }
55
124
  //# sourceMappingURL=create-app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../src/commands/create-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAE7C,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,YAAY;KACtB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;KACxB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,mCAAmC;QAC5C,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1B,IAAI,EAAE,CAAC,QAAa,EAAE,EAAE;YACtB,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;YAC1B,OAAO,IAAI,KAAK,KAAK,CAAC;QACxB,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QAClC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,QAAa,EAAE,EAAE;YACtB,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;YAC1B,OAAO,IAAI,KAAK,KAAK,CAAC;QACxB,CAAC;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QAClC,OAAO,EAAE,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,CAAC,QAAa,EAAE,EAAE;YACtB,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;YAC1B,OAAO,IAAI,KAAK,KAAK,CAAC;QACxB,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAEzC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAAA,CAAC"}
1
+ {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../src/commands/create-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAA2B,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,yBAAyB,EACzB,cAAc,EAEd,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAE7C,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,YAAY;KACtB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;KACxB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,mCAAmC;QAC5C,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1B,IAAI,EAAE,CAAC,QAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK;KAC/D;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QAClC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,QAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK;KAC/D;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QAClC,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,CAAC,QAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK;KAC/D;CACF,CAAC;AAEF,SAAS,iBAAiB,CAAC,OAM1B;IACC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACvE,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB;IAC9C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2B;IACpD,QAAQ,CAAC;QACP,OAAO,EAAE,YAAY;QACrB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,YAAY,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC3F,IAAI,CAAC;QACH,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,OAAO;QACd,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,iBAAoC,EAAE;IACtF,MAAM,MAAM,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;IACrC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,KAAK,GAAsB,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;IAE7F,IAAI,CAAC;QACH,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAExB,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAA2B,CAAC;QAChC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,OAAO,GAAG,iBAAiB,CAAC,OAM3B,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,WAAW,CAAC,OAAO,CAAC,CAAC;QAErB,IAAI,MAAM,EAAE,CAAC;YACX,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,EAAE,CAAC;YACX,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,19 +1,19 @@
1
- import { createServer, mergeConfig } from 'vite';
2
- import { getViteConfig } from '../common/get-vite-config.js';
3
- export const devServe = async (options) => {
4
- const { port = 1337, host = true } = options;
5
- const config = await getViteConfig();
6
- const devConfig = mergeConfig(config, {
7
- configFile: false,
8
- mode: 'dev',
9
- server: {
10
- port,
11
- host,
12
- hmr: true
13
- }
14
- });
15
- const server = await createServer(devConfig);
16
- await server.listen();
17
- server.printUrls();
18
- };
1
+ import { createServer, mergeConfig } from 'vite';
2
+ import { getViteConfig } from '../common/get-vite-config.js';
3
+ export const devServe = async (options) => {
4
+ const { port = 1337, host = true } = options;
5
+ const config = await getViteConfig();
6
+ const devConfig = mergeConfig(config, {
7
+ configFile: false,
8
+ mode: 'dev',
9
+ server: {
10
+ port,
11
+ host,
12
+ hmr: true
13
+ }
14
+ });
15
+ const server = await createServer(devConfig);
16
+ await server.listen();
17
+ server.printUrls();
18
+ };
19
19
  //# sourceMappingURL=dev-serve.js.map