@farris/cli 2.2.0-beta.1 → 2.2.0-beta.2

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 +73 -0
  10. package/lib/commands/create-app-options.js.map +1 -0
  11. package/lib/commands/create-app.js +85 -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 +53 -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 +184 -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 +62 -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 +63 -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 +63 -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
@@ -1,49 +1,49 @@
1
- import { readFileSync } from 'node:fs';
2
- import { resolve } from 'node:path';
3
- import { CWD } from '../common/constant.js';
4
- import { listLibComponents } from '../common/list-lib-components.js';
5
- import { buildLibPackageExports } from '../common/lib-package-exports.js';
6
- export const createPackageJson = () => {
7
- const seen = new Set();
8
- return {
9
- name: 'create-package-json',
10
- generateBundle(outputOptions) {
11
- if (outputOptions.format) {
12
- seen.add(outputOptions.format === 'es' ? 'es' : outputOptions.format);
13
- }
14
- const pkg = JSON.parse(readFileSync(resolve(CWD, 'package.json'), 'utf-8'));
15
- const result = {
16
- name: '',
17
- version: '',
18
- private: false,
19
- types: './types/index.d.ts',
20
- style: './index.css'
21
- };
22
- if (seen.has('es')) {
23
- result.module = './index.esm.js';
24
- if (!seen.has('umd')) {
25
- result.main = './index.esm.js';
26
- }
27
- }
28
- if (seen.has('umd')) {
29
- result.main = './index.umd.js';
30
- }
31
- const exclude = ['scripts', 'devDependencies', 'private'];
32
- Object.keys(pkg).forEach((key) => {
33
- if (exclude.includes(key)) {
34
- return;
35
- }
36
- result[key] = pkg[key];
37
- });
38
- const extra = buildLibPackageExports(listLibComponents(process.cwd()), seen);
39
- result.sideEffects = extra.sideEffects;
40
- result.exports = extra.exports;
41
- this.emitFile({
42
- type: 'asset',
43
- fileName: 'package.json',
44
- source: JSON.stringify(result, null, 2)
45
- });
46
- }
47
- };
48
- };
1
+ import { readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { CWD } from '../common/constant.js';
4
+ import { listLibComponents } from '../common/list-lib-components.js';
5
+ import { buildLibPackageExports } from '../common/lib-package-exports.js';
6
+ export const createPackageJson = () => {
7
+ const seen = new Set();
8
+ return {
9
+ name: 'create-package-json',
10
+ generateBundle(outputOptions) {
11
+ if (outputOptions.format) {
12
+ seen.add(outputOptions.format === 'es' ? 'es' : outputOptions.format);
13
+ }
14
+ const pkg = JSON.parse(readFileSync(resolve(CWD, 'package.json'), 'utf-8'));
15
+ const result = {
16
+ name: '',
17
+ version: '',
18
+ private: false,
19
+ types: './types/index.d.ts',
20
+ style: './index.css'
21
+ };
22
+ if (seen.has('es')) {
23
+ result.module = './index.esm.js';
24
+ if (!seen.has('umd')) {
25
+ result.main = './index.esm.js';
26
+ }
27
+ }
28
+ if (seen.has('umd')) {
29
+ result.main = './index.umd.js';
30
+ }
31
+ const exclude = ['scripts', 'devDependencies', 'private'];
32
+ Object.keys(pkg).forEach((key) => {
33
+ if (exclude.includes(key)) {
34
+ return;
35
+ }
36
+ result[key] = pkg[key];
37
+ });
38
+ const extra = buildLibPackageExports(listLibComponents(process.cwd()), seen);
39
+ result.sideEffects = extra.sideEffects;
40
+ result.exports = extra.exports;
41
+ this.emitFile({
42
+ type: 'asset',
43
+ fileName: 'package.json',
44
+ source: JSON.stringify(result, null, 2)
45
+ });
46
+ }
47
+ };
48
+ };
49
49
  //# sourceMappingURL=create-package-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-package-json.js","sourceRoot":"","sources":["../../src/plugins/create-package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAQ,EAAE;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,cAAc,CAAC,aAAkC;YAC/C,IAAI,aAAa,CAAC,MAAM,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aACvE;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAwB;gBAClC,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oBAAoB;gBAC3B,KAAK,EAAE,aAAa;aACrB,CAAC;YACF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAClB,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACpB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;iBAChC;aACF;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;aAChC;YACD,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACzB,OAAO;iBACR;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YACvC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"create-package-json.js","sourceRoot":"","sources":["../../src/plugins/create-package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAQ,EAAE;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,cAAc,CAAC,aAAkC;YAC/C,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAwB;gBAClC,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oBAAoB;gBAC3B,KAAK,EAAE,aAAa;aACrB,CAAC;YACF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;YACjC,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YACvC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,9 +1,9 @@
1
- import dts from "vite-plugin-dts";
2
- export function generateTypes(entry, outDir) {
3
- return dts({
4
- entryRoot: entry,
5
- outDir
6
- });
7
- }
8
- ;
1
+ import dts from "vite-plugin-dts";
2
+ export function generateTypes(entry, outDir) {
3
+ return dts({
4
+ entryRoot: entry,
5
+ outDir
6
+ });
7
+ }
8
+ ;
9
9
  //# sourceMappingURL=dts.js.map
@@ -1,12 +1,12 @@
1
- export const htmlSystemPlugin = () => {
2
- return {
3
- name: 'html-transform-system',
4
- transformIndexHtml(html) {
5
- const regexp = /<script.*type="module".*src="(.*?)"><\/script>/;
1
+ export const htmlSystemPlugin = () => {
2
+ return {
3
+ name: 'html-transform-system',
4
+ transformIndexHtml(html) {
5
+ const regexp = /<script.*type="module".*src="(.*?)"><\/script>/;
6
6
  return html.replace(regexp, (str, p1) => `
7
7
  <script src="https://cdn.bootcdn.net/ajax/libs/systemjs/6.15.1/system.js"></script>
8
- <script >System.import("${p1}");</script>`);
9
- }
10
- };
11
- };
8
+ <script >System.import("${p1}");</script>`);
9
+ }
10
+ };
11
+ };
12
12
  //# sourceMappingURL=html-system.js.map
@@ -1,18 +1,18 @@
1
- import { getPackageName } from '../common/constant.js';
2
- export function replace(path) {
3
- return {
4
- name: 'farris-replace-path',
5
- renderChunk(code, chunk) {
6
- const fileNames = chunk.fileName.split('.');
7
- const format = fileNames[fileNames.length - 2];
8
- // const regExpress = new RegExp(/@farris\/mobile-ui-vue\/([\w-]+)/g);
9
- const dynamicRegExp = new RegExp(`${getPackageName().replace(/\//g, '\\/')}\\/([\\w-]+)`, // 自动转义斜杠
10
- 'g');
11
- return code.replace(dynamicRegExp, (match, captureGroup) => {
12
- return path(format, [captureGroup]);
13
- });
14
- }
15
- };
16
- }
17
- ;
1
+ import { getPackageName } from '../common/constant.js';
2
+ export function replace(path) {
3
+ return {
4
+ name: 'farris-replace-path',
5
+ renderChunk(code, chunk) {
6
+ const fileNames = chunk.fileName.split('.');
7
+ const format = fileNames[fileNames.length - 2];
8
+ // const regExpress = new RegExp(/@farris\/mobile-ui-vue\/([\w-]+)/g);
9
+ const dynamicRegExp = new RegExp(`${getPackageName().replace(/\//g, '\\/')}\\/([\\w-]+)`, // 自动转义斜杠
10
+ 'g');
11
+ return code.replace(dynamicRegExp, (match, captureGroup) => {
12
+ return path(format, [captureGroup]);
13
+ });
14
+ }
15
+ };
16
+ }
17
+ ;
18
18
  //# sourceMappingURL=replace.js.map
@@ -1,16 +1,16 @@
1
- export function systemjsBundle() {
2
- return {
3
- name: 'systemjs-bundle',
4
- outputOptions(options) {
5
- if (options.format === 'systemjs') {
6
- return {
7
- ...options,
8
- name: undefined
9
- };
10
- }
11
- return options;
12
- }
13
- };
14
- }
15
- ;
1
+ export function systemjsBundle() {
2
+ return {
3
+ name: 'systemjs-bundle',
4
+ outputOptions(options) {
5
+ if (options.format === 'systemjs') {
6
+ return {
7
+ ...options,
8
+ name: undefined
9
+ };
10
+ }
11
+ return options;
12
+ }
13
+ };
14
+ }
15
+ ;
16
16
  //# sourceMappingURL=systemjs-bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"systemjs-bundle.js","sourceRoot":"","sources":["../../src/plugins/systemjs-bundle.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,aAAa,CAAC,OAAY;YACxB,IAAG,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;gBAChC,OAAO;oBACL,GAAG,OAAO;oBACV,IAAI,EAAE,SAAS;iBAChB,CAAC;aACH;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAAA,CAAC"}
1
+ {"version":3,"file":"systemjs-bundle.js","sourceRoot":"","sources":["../../src/plugins/systemjs-bundle.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,aAAa,CAAC,OAAY;YACxB,IAAG,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO;oBACL,GAAG,OAAO;oBACV,IAAI,EAAE,SAAS;iBAChB,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAAA,CAAC"}
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "@farris/cli",
3
3
  "private": false,
4
- "version": "2.2.0-beta.1",
4
+ "version": "2.2.0-beta.2",
5
5
  "type": "module",
6
6
  "typings": "lib/index.d.ts",
7
7
  "bin": {
8
8
  "farris-cli": "./bin/index.js"
9
9
  },
10
10
  "engines": {
11
- "node": ">=18.0.0"
11
+ "node": "^18.0.0 || >=20.0.0",
12
+ "pnpm": ">=9.0.0"
12
13
  },
13
14
  "scripts": {
14
15
  "build": "rimraf ./lib && tsc",
15
- "test": "vitest run"
16
+ "test": "vitest run --config vitest.config.ts"
16
17
  },
17
18
  "files": [
18
19
  "lib",
@@ -27,18 +28,20 @@
27
28
  "commander": "^9.4.0",
28
29
  "esbuild": "^0.23.0",
29
30
  "esbuild-sass-plugin": "^3.3.1",
31
+ "fs-extra": "^11.2.0",
32
+ "glob": "^10.4.5",
30
33
  "inquirer": "^9.3.0",
31
34
  "ora": "^8.0.1",
32
- "typescript": "^4.6.4",
33
- "vite": "^4.5.10",
35
+ "typescript": "^5.7.3",
36
+ "vite": "^5.4.19",
34
37
  "vite-plugin-css-injected-by-js": "^3.5.2",
35
- "vite-plugin-dts": "^3.9.1",
36
- "glob": "11.0.3"
38
+ "vite-plugin-dts": "^3.9.1"
37
39
  },
38
40
  "devDependencies": {
41
+ "@types/fs-extra": "^11.0.4",
39
42
  "@types/inquirer": "^9.0.7",
40
43
  "rimraf": "^5.0.7",
41
44
  "vitest": "^1.6.1",
42
- "vue": "^3.2.37"
45
+ "vue": "^3.5.13"
43
46
  }
44
- }
47
+ }
@@ -0,0 +1,62 @@
1
+ image: node:20
2
+
3
+ variables:
4
+ PROJECT_ROOT: "."
5
+
6
+ stages:
7
+ - pre
8
+ - build
9
+ - publish
10
+ - publishproject
11
+
12
+ pre-job:
13
+ stage: pre
14
+ tags:
15
+ - environment:cloud
16
+ script:
17
+ - export commit_author=$(git log -1 --pretty=format:%an)
18
+ - export commit_email=$(git log -1 --pretty=format:%ce)
19
+
20
+ build-job:
21
+ stage: build
22
+ tags:
23
+ - environment:cloud
24
+ script:
25
+ - npm config set registry https://repos.iec.io/repository/npm-igix/
26
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
27
+ - npm i
28
+ - npm test
29
+ - npm run build
30
+ artifacts:
31
+ expire_in: '5days'
32
+ name: 'dist'
33
+ paths:
34
+ - $CI_PROJECT_DIR/lib
35
+
36
+ publish-one:
37
+ stage: publish
38
+ tags:
39
+ - environment:cloud
40
+ only:
41
+ refs:
42
+ - cicd
43
+ changes:
44
+ - package.json
45
+ script:
46
+ - npm config set registry https://repos.iec.io/repository/npm-igix-release/
47
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
48
+ - cd lib && npm publish
49
+
50
+ publish-project:
51
+ stage: publishproject
52
+ tags:
53
+ - environment:cloud
54
+ only:
55
+ refs:
56
+ - cicd
57
+ changes:
58
+ - project.json
59
+ script:
60
+ - npm config set registry https://repos.iec.io/repository/npm-igix-release/
61
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
62
+ - echo "skip publishproject: lib has no project.json"
@@ -1,17 +1,3 @@
1
1
  # <%= name %>
2
2
 
3
- ## Scripts
4
-
5
- - `npm run build` — `build-lib` then `build-css` (css after lib so Vite does not wipe `index.css`)
6
- - `npm run changeset` — record a change
7
- - `npm run version` — bump version and changelog
8
-
9
- If the default branch is not `main`, edit `.changeset/config.json` `baseBranch`.
10
-
11
- ## Output
12
-
13
- Artifacts go to `lib/` (`index.esm.js` / `index.umd.js` / `index.systemjs.js` depending on formats, plus `types/` and `index.css`).
14
-
15
- ## Add a component
16
-
17
- Copy `components/button` to a new folder and re-export it from `components/index.ts`.
3
+ `src/` 是本地演示应用,执行 `npm run dev` 启动。发布到 npm 的组件源码在 `components/`,执行 `npm run build` 打包。
@@ -0,0 +1,8 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { Button } from './index';
3
+
4
+ describe('Button', () => {
5
+ it('exports a component', () => {
6
+ expect(Button).toBeTruthy();
7
+ });
8
+ });
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Lib Demo</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/main.ts"></script>
11
+ </body>
12
+ </html>
@@ -4,7 +4,10 @@
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "scripts": {
7
+ "dev": "farris-cli dev",
7
8
  "build": "farris-cli build-lib -ep && farris-cli build-components",
9
+ "test": "vitest run",
10
+ "test:watch": "vitest",
8
11
  "changeset": "changeset",
9
12
  "version": "changeset version"
10
13
  },
@@ -15,7 +18,9 @@
15
18
  "@changesets/cli": "^2.29.5",
16
19
  "@farris/cli": "<%= cliVersion %>",
17
20
  "@vue/tsconfig": "^0.5.1",
21
+ "@vitejs/plugin-vue": "^4.0.0",
18
22
  "typescript": "~5.4.0",
19
- "vue": "^3.4.29"
23
+ "vue": "^3.4.29",
24
+ "vitest": "^1.6.1"
20
25
  }
21
26
  }
@@ -0,0 +1,7 @@
1
+ <script setup lang="ts">
2
+ import { Button } from '../components';
3
+ </script>
4
+
5
+ <template>
6
+ <Button type="primary">Lib demo</Button>
7
+ </template>
@@ -0,0 +1,4 @@
1
+ import { createApp } from 'vue';
2
+ import App from './App.vue';
3
+
4
+ createApp(App).mount('#app');
@@ -0,0 +1,9 @@
1
+ import vue from '@vitejs/plugin-vue';
2
+ import { defineConfig } from 'vitest/config';
3
+
4
+ export default defineConfig({
5
+ plugins: [vue()],
6
+ test: {
7
+ include: ['components/**/*.spec.ts']
8
+ }
9
+ });
@@ -0,0 +1,63 @@
1
+ image: node:20
2
+
3
+ variables:
4
+ PROJECT_ROOT: "."
5
+
6
+ stages:
7
+ - pre
8
+ - build
9
+ - publish
10
+ - publishproject
11
+
12
+ pre-job:
13
+ stage: pre
14
+ tags:
15
+ - environment:cloud
16
+ script:
17
+ - export commit_author=$(git log -1 --pretty=format:%an)
18
+ - export commit_email=$(git log -1 --pretty=format:%ce)
19
+
20
+ build-job:
21
+ stage: build
22
+ tags:
23
+ - environment:cloud
24
+ script:
25
+ - npm config set registry https://repos.iec.io/repository/npm-igix/
26
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
27
+ - npm i
28
+ - npm test
29
+ - npm run build
30
+ artifacts:
31
+ expire_in: '5days'
32
+ name: 'dist'
33
+ paths:
34
+ - $CI_PROJECT_DIR/dist
35
+
36
+ publish-one:
37
+ stage: publish
38
+ tags:
39
+ - environment:cloud
40
+ only:
41
+ refs:
42
+ - cicd
43
+ changes:
44
+ - packages/**/package.json
45
+ script:
46
+ - echo "skip publish-one: app package is private"
47
+
48
+ publish-project:
49
+ stage: publishproject
50
+ tags:
51
+ - environment:cloud
52
+ only:
53
+ refs:
54
+ - cicd
55
+ changes:
56
+ - project.json
57
+ script:
58
+ - npm config set registry https://repos.iec.io/repository/npm-igix-release/
59
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
60
+ - cp ./project.json ./dist
61
+ - cd ./dist
62
+ - mv ./project.json ./package.json
63
+ - npm publish
@@ -9,6 +9,8 @@
9
9
  "preview": "farris-cli preview",
10
10
  "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
11
11
  "format": "prettier --write src/",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest",
12
14
  "changeset": "changeset",
13
15
  "version": "changeset version"
14
16
  },
@@ -24,9 +26,11 @@
24
26
  "@vue/eslint-config-prettier": "^9.0.0",
25
27
  "@vue/eslint-config-typescript": "^13.0.0",
26
28
  "@vue/tsconfig": "^0.5.1",
29
+ "@vitejs/plugin-vue": "^4.0.0",
27
30
  "eslint": "^8.57.0",
28
31
  "eslint-plugin-vue": "^9.23.0",
29
32
  "prettier": "^3.2.5",
30
- "typescript": "~5.4.0"
33
+ "typescript": "~5.4.0",
34
+ "vitest": "^1.6.1"
31
35
  }
32
36
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "<%= projectPackageName %>",
3
+ "version": "0.0.0"
4
+ }
@@ -0,0 +1,8 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import TheButton from './TheButton.vue';
3
+
4
+ describe('TheButton', () => {
5
+ it('exports a component', () => {
6
+ expect(TheButton).toBeTruthy();
7
+ });
8
+ });
@@ -0,0 +1,9 @@
1
+ import vue from '@vitejs/plugin-vue';
2
+ import { defineConfig } from 'vitest/config';
3
+
4
+ export default defineConfig({
5
+ plugins: [vue()],
6
+ test: {
7
+ include: ['src/**/*.spec.ts']
8
+ }
9
+ });
@@ -0,0 +1,63 @@
1
+ image: node:20
2
+
3
+ variables:
4
+ PROJECT_ROOT: "."
5
+
6
+ stages:
7
+ - pre
8
+ - build
9
+ - publish
10
+ - publishproject
11
+
12
+ pre-job:
13
+ stage: pre
14
+ tags:
15
+ - environment:cloud
16
+ script:
17
+ - export commit_author=$(git log -1 --pretty=format:%an)
18
+ - export commit_email=$(git log -1 --pretty=format:%ce)
19
+
20
+ build-job:
21
+ stage: build
22
+ tags:
23
+ - environment:cloud
24
+ script:
25
+ - npm config set registry https://repos.iec.io/repository/npm-igix/
26
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
27
+ - npm i
28
+ - npm test
29
+ - npm run build
30
+ artifacts:
31
+ expire_in: '5days'
32
+ name: 'dist'
33
+ paths:
34
+ - $CI_PROJECT_DIR/dist
35
+
36
+ publish-one:
37
+ stage: publish
38
+ tags:
39
+ - environment:cloud
40
+ only:
41
+ refs:
42
+ - cicd
43
+ changes:
44
+ - packages/**/package.json
45
+ script:
46
+ - echo "skip publish-one: app package is private"
47
+
48
+ publish-project:
49
+ stage: publishproject
50
+ tags:
51
+ - environment:cloud
52
+ only:
53
+ refs:
54
+ - cicd
55
+ changes:
56
+ - project.json
57
+ script:
58
+ - npm config set registry https://repos.iec.io/repository/npm-igix-release/
59
+ - npm config set _auth=$(echo -n $ARTIFACTS_REPO_USERNAME:$ARTIFACTS_REPO_PASSWORD | base64)
60
+ - cp ./project.json ./dist
61
+ - cd ./dist
62
+ - mv ./project.json ./package.json
63
+ - npm publish
@@ -9,6 +9,8 @@
9
9
  "preview": "farris-cli preview",
10
10
  "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
11
11
  "format": "prettier --write src/",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest",
12
14
  "changeset": "changeset",
13
15
  "version": "changeset version"
14
16
  },
@@ -24,9 +26,11 @@
24
26
  "@vue/eslint-config-prettier": "^9.0.0",
25
27
  "@vue/eslint-config-typescript": "^13.0.0",
26
28
  "@vue/tsconfig": "^0.5.1",
29
+ "@vitejs/plugin-vue": "^4.0.0",
27
30
  "eslint": "^8.57.0",
28
31
  "eslint-plugin-vue": "^9.23.0",
29
32
  "prettier": "^3.2.5",
30
- "typescript": "~5.4.0"
33
+ "typescript": "~5.4.0",
34
+ "vitest": "^1.6.1"
31
35
  }
32
36
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "<%= projectPackageName %>",
3
+ "version": "0.0.0"
4
+ }
@@ -0,0 +1,8 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import TheButton from './TheButton.vue';
3
+
4
+ describe('TheButton', () => {
5
+ it('exports a component', () => {
6
+ expect(TheButton).toBeTruthy();
7
+ });
8
+ });
@@ -0,0 +1,9 @@
1
+ import vue from '@vitejs/plugin-vue';
2
+ import { defineConfig } from 'vitest/config';
3
+
4
+ export default defineConfig({
5
+ plugins: [vue()],
6
+ test: {
7
+ include: ['src/**/*.spec.ts']
8
+ }
9
+ });