@spcsn/taro-cli 0.1.6 → 1.0.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 (188) hide show
  1. package/README.md +10 -7
  2. package/define-config.d.ts +1 -0
  3. package/define-config.js +1 -0
  4. package/dist/cli.js +140 -110
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/{customCommand.d.ts → custom-command.d.ts} +1 -1
  7. package/dist/commands/custom-command.js +23 -0
  8. package/dist/commands/custom-command.js.map +1 -0
  9. package/dist/create/creator.js +2 -0
  10. package/dist/create/creator.js.map +1 -1
  11. package/dist/create/{fetchTemplate.js → fetch-template.js} +26 -33
  12. package/dist/create/fetch-template.js.map +1 -0
  13. package/dist/create/project.d.ts +2 -6
  14. package/dist/create/project.js +240 -285
  15. package/dist/create/project.js.map +1 -1
  16. package/dist/create/template-creator.d.ts +75 -0
  17. package/dist/create/template-creator.js +275 -0
  18. package/dist/create/template-creator.js.map +1 -0
  19. package/dist/doctor/validators.d.ts +7 -6
  20. package/dist/doctor/validators.js +6 -7
  21. package/dist/doctor/validators.js.map +1 -1
  22. package/dist/platform-weapp/apis-list.d.ts +1 -0
  23. package/dist/platform-weapp/apis-list.js +37 -0
  24. package/dist/platform-weapp/apis-list.js.map +1 -0
  25. package/dist/platform-weapp/apis.d.ts +16 -0
  26. package/dist/platform-weapp/apis.js +34 -0
  27. package/dist/platform-weapp/apis.js.map +1 -0
  28. package/dist/platform-weapp/components-react.d.ts +80 -0
  29. package/dist/platform-weapp/components-react.js +86 -0
  30. package/dist/platform-weapp/components-react.js.map +1 -0
  31. package/dist/platform-weapp/components.d.ts +4 -0
  32. package/dist/platform-weapp/components.js +520 -0
  33. package/dist/platform-weapp/components.js.map +1 -0
  34. package/dist/platform-weapp/index.d.ts +11 -0
  35. package/dist/platform-weapp/index.js +17 -0
  36. package/dist/platform-weapp/index.js.map +1 -0
  37. package/dist/platform-weapp/program.d.ts +35 -0
  38. package/dist/platform-weapp/program.js +64 -0
  39. package/dist/platform-weapp/program.js.map +1 -0
  40. package/dist/platform-weapp/runtime-utils.d.ts +27 -0
  41. package/dist/platform-weapp/runtime-utils.js +48 -0
  42. package/dist/platform-weapp/runtime-utils.js.map +1 -0
  43. package/dist/platform-weapp/runtime.d.ts +1 -0
  44. package/dist/platform-weapp/runtime.js +7 -0
  45. package/dist/platform-weapp/runtime.js.map +1 -0
  46. package/dist/platform-weapp/template.d.ts +39 -0
  47. package/dist/platform-weapp/template.js +119 -0
  48. package/dist/platform-weapp/template.js.map +1 -0
  49. package/dist/presets/commands/build.js +25 -45
  50. package/dist/presets/commands/build.js.map +1 -1
  51. package/dist/presets/commands/init.js +2 -4
  52. package/dist/presets/commands/init.js.map +1 -1
  53. package/dist/presets/constant/hooks.d.ts +0 -2
  54. package/dist/presets/constant/hooks.js +1 -3
  55. package/dist/presets/constant/hooks.js.map +1 -1
  56. package/dist/presets/files/generate-framework-info.js +68 -0
  57. package/dist/presets/files/generate-framework-info.js.map +1 -0
  58. package/dist/presets/files/{generateProjectConfig.js → generate-project-config.js} +1 -1
  59. package/dist/presets/files/generate-project-config.js.map +1 -0
  60. package/dist/presets/files/{writeFileToDist.js → write-file-to-dist.js} +1 -1
  61. package/dist/presets/files/write-file-to-dist.js.map +1 -0
  62. package/dist/presets/hooks/build.js +1 -3
  63. package/dist/presets/hooks/build.js.map +1 -1
  64. package/dist/presets/index.js +3 -5
  65. package/dist/presets/index.js.map +1 -1
  66. package/dist/util/{appConfig.d.ts → app-config.d.ts} +2 -2
  67. package/dist/util/{appConfig.js → app-config.js} +4 -3
  68. package/dist/util/app-config.js.map +1 -0
  69. package/dist/util/defineConfig.d.ts +5 -5
  70. package/dist/util/defineConfig.js.map +1 -1
  71. package/dist/util/index.d.ts +9 -1
  72. package/dist/util/index.js +54 -23
  73. package/dist/util/index.js.map +1 -1
  74. package/package.json +36 -39
  75. package/postinstall.js +1 -17
  76. package/src/cli.ts +185 -132
  77. package/src/commands/custom-command.ts +22 -0
  78. package/src/create/{fetchTemplate.ts → fetch-template.ts} +30 -35
  79. package/src/create/project.ts +31 -78
  80. package/src/create/template-creator.ts +325 -0
  81. package/src/doctor/validators.js +1 -0
  82. package/src/doctor/validators.ts +8 -6
  83. package/src/platform-weapp/apis-list.ts +33 -0
  84. package/src/platform-weapp/apis.ts +48 -0
  85. package/src/platform-weapp/components-react.ts +81 -0
  86. package/src/platform-weapp/components.ts +521 -0
  87. package/src/platform-weapp/index.ts +25 -0
  88. package/src/platform-weapp/program.ts +70 -0
  89. package/src/platform-weapp/runtime-utils.ts +57 -0
  90. package/src/platform-weapp/runtime.ts +6 -0
  91. package/src/platform-weapp/template.ts +150 -0
  92. package/src/presets/commands/build.ts +20 -40
  93. package/src/presets/commands/init.ts +1 -4
  94. package/src/presets/constant/hooks.js +12 -0
  95. package/src/presets/constant/hooks.ts +0 -2
  96. package/src/presets/files/{generateFrameworkInfo.ts → generate-framework-info.ts} +7 -1
  97. package/src/presets/hooks/build.ts +1 -3
  98. package/src/presets/index.ts +3 -5
  99. package/src/util/app-config.js +1 -0
  100. package/src/util/{appConfig.ts → app-config.ts} +5 -4
  101. package/src/util/defineConfig.ts +6 -6
  102. package/src/util/index.ts +67 -25
  103. package/templates/default/config/dev.js +1 -1
  104. package/templates/default/config/index.js +28 -40
  105. package/templates/default/config/prod.js +1 -1
  106. package/templates/default/package.json.tmpl +2 -17
  107. package/templates/default/types/global.d.ts +0 -4
  108. package/templates/plugin-compile/README.md +3 -1
  109. package/templates/plugin-compile/package.json.tmpl +1 -2
  110. package/templates/plugin-compile/src/index.ts +18 -28
  111. package/LICENSE +0 -174
  112. package/dist/commands/customCommand.js +0 -23
  113. package/dist/commands/customCommand.js.map +0 -1
  114. package/dist/config/packagesManagement.d.ts +0 -19
  115. package/dist/config/packagesManagement.js +0 -22
  116. package/dist/config/packagesManagement.js.map +0 -1
  117. package/dist/create/fetchTemplate.js.map +0 -1
  118. package/dist/create/page.d.ts +0 -65
  119. package/dist/create/page.js +0 -266
  120. package/dist/create/page.js.map +0 -1
  121. package/dist/create/plugin.d.ts +0 -16
  122. package/dist/create/plugin.js +0 -77
  123. package/dist/create/plugin.js.map +0 -1
  124. package/dist/presets/commands/config.js +0 -121
  125. package/dist/presets/commands/config.js.map +0 -1
  126. package/dist/presets/commands/create.js +0 -112
  127. package/dist/presets/commands/create.js.map +0 -1
  128. package/dist/presets/commands/doctor.js +0 -15
  129. package/dist/presets/commands/doctor.js.map +0 -1
  130. package/dist/presets/commands/global-config.d.ts +0 -3
  131. package/dist/presets/commands/global-config.js +0 -175
  132. package/dist/presets/commands/global-config.js.map +0 -1
  133. package/dist/presets/commands/help.d.ts +0 -3
  134. package/dist/presets/commands/help.js +0 -16
  135. package/dist/presets/commands/help.js.map +0 -1
  136. package/dist/presets/commands/info.d.ts +0 -3
  137. package/dist/presets/commands/info.js +0 -96
  138. package/dist/presets/commands/info.js.map +0 -1
  139. package/dist/presets/commands/inspect.d.ts +0 -3
  140. package/dist/presets/commands/inspect.js +0 -155
  141. package/dist/presets/commands/inspect.js.map +0 -1
  142. package/dist/presets/commands/update.d.ts +0 -3
  143. package/dist/presets/commands/update.js +0 -187
  144. package/dist/presets/commands/update.js.map +0 -1
  145. package/dist/presets/files/generateFrameworkInfo.d.ts +0 -3
  146. package/dist/presets/files/generateFrameworkInfo.js +0 -30
  147. package/dist/presets/files/generateFrameworkInfo.js.map +0 -1
  148. package/dist/presets/files/generateProjectConfig.d.ts +0 -3
  149. package/dist/presets/files/generateProjectConfig.js.map +0 -1
  150. package/dist/presets/files/writeFileToDist.d.ts +0 -3
  151. package/dist/presets/files/writeFileToDist.js.map +0 -1
  152. package/dist/presets/hooks/create.d.ts +0 -3
  153. package/dist/presets/hooks/create.js +0 -42
  154. package/dist/presets/hooks/create.js.map +0 -1
  155. package/dist/presets/platforms/plugin.d.ts +0 -3
  156. package/dist/presets/platforms/plugin.js +0 -106
  157. package/dist/presets/platforms/plugin.js.map +0 -1
  158. package/dist/presets/platforms/rn.d.ts +0 -3
  159. package/dist/presets/platforms/rn.js +0 -130
  160. package/dist/presets/platforms/rn.js.map +0 -1
  161. package/dist/util/appConfig.js.map +0 -1
  162. package/dist/util/createPage.d.ts +0 -9
  163. package/dist/util/createPage.js +0 -114
  164. package/dist/util/createPage.js.map +0 -1
  165. package/src/commands/customCommand.ts +0 -22
  166. package/src/config/packagesManagement.ts +0 -20
  167. package/src/config/rn-stylelint.json +0 -4
  168. package/src/create/page.ts +0 -325
  169. package/src/create/plugin.ts +0 -55
  170. package/src/presets/commands/config.ts +0 -86
  171. package/src/presets/commands/create.ts +0 -104
  172. package/src/presets/commands/doctor.ts +0 -21
  173. package/src/presets/commands/global-config.ts +0 -140
  174. package/src/presets/commands/help.ts +0 -17
  175. package/src/presets/commands/info.ts +0 -81
  176. package/src/presets/commands/inspect.ts +0 -137
  177. package/src/presets/commands/update.ts +0 -175
  178. package/src/presets/hooks/create.ts +0 -9
  179. package/src/presets/platforms/plugin.ts +0 -75
  180. package/src/presets/platforms/rn.ts +0 -125
  181. package/src/util/createPage.ts +0 -139
  182. package/templates/default/babel.config.js +0 -14
  183. /package/dist/create/{fetchTemplate.d.ts → fetch-template.d.ts} +0 -0
  184. /package/dist/presets/{commands/config.d.ts → files/generate-framework-info.d.ts} +0 -0
  185. /package/dist/presets/{commands/create.d.ts → files/generate-project-config.d.ts} +0 -0
  186. /package/dist/presets/{commands/doctor.d.ts → files/write-file-to-dist.d.ts} +0 -0
  187. /package/src/presets/files/{generateProjectConfig.ts → generate-project-config.ts} +0 -0
  188. /package/src/presets/files/{writeFileToDist.ts → write-file-to-dist.ts} +0 -0
@@ -1,114 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modifyPagesOrSubPackages = void 0;
4
- const taro_helper_1 = require("@spcsn/taro-helper");
5
- const page_1 = require("../create/page");
6
- const t = taro_helper_1.babelKit.types;
7
- const generateNewSubPackageItem = (subPackage) => {
8
- const pageObject = t.objectProperty(t.identifier('pages'), t.arrayExpression([]));
9
- const subPkgRootObject = t.objectProperty(t.identifier('root'), t.stringLiteral(subPackage));
10
- const subPkgItemObject = t.objectExpression([subPkgRootObject, pageObject]);
11
- return subPkgItemObject;
12
- };
13
- const isValidSubPkgObject = (subPkgObject) => {
14
- const properties = subPkgObject?.properties || {};
15
- const rootProperty = properties.find((property) => property.key && property.key?.name === 'root');
16
- const pagesProperty = properties.find((property) => property.key && property.key?.name === 'pages');
17
- const rootPropertyValueType = rootProperty?.value?.type;
18
- const pagesPropertyValueType = pagesProperty?.value?.type;
19
- return rootPropertyValueType === 'StringLiteral' && pagesPropertyValueType === 'ArrayExpression';
20
- };
21
- const addNewSubPackage = (node, page, subPackage) => {
22
- let subPackages = node?.properties.find((node) => node.key.name === 'subPackages');
23
- if (!subPackages) {
24
- // config 文件不存在 subPackages 字段的情况,给该字段赋予默认值
25
- const subPkgObject = t.objectProperty(t.identifier('subPackages'), t.arrayExpression([]));
26
- subPackages = subPkgObject;
27
- node?.properties.push(subPkgObject);
28
- }
29
- const value = subPackages?.value;
30
- // 文件格式不对的情况
31
- if (!value || value?.type !== 'ArrayExpression')
32
- return page_1.ConfigModificationState.Fail;
33
- let targetSubPkgObject = value.elements.find((node) => node?.properties?.find((property) => property?.value?.value === subPackage));
34
- if (!targetSubPkgObject) {
35
- // 不存在 当前分包配置对象的情况
36
- const subPkgItemObject = generateNewSubPackageItem(subPackage);
37
- targetSubPkgObject = subPkgItemObject;
38
- value.elements.push(subPkgItemObject);
39
- }
40
- if (targetSubPkgObject.type !== 'ObjectExpression' || !isValidSubPkgObject(targetSubPkgObject))
41
- return page_1.ConfigModificationState.Fail;
42
- const pagesProperty = targetSubPkgObject.properties.find((property) => property.key && property.key?.name === 'pages');
43
- const currentPages = pagesProperty.value.elements;
44
- const isPageExists = Boolean(currentPages.find((node) => node.value === page));
45
- if (isPageExists)
46
- return page_1.ConfigModificationState.NeedLess;
47
- currentPages.push(t.stringLiteral(page));
48
- return page_1.ConfigModificationState.Success;
49
- };
50
- const addNewPage = (node, page) => {
51
- const pages = node?.properties.find((node) => node.key.name === 'pages');
52
- if (!pages)
53
- return page_1.ConfigModificationState.Fail;
54
- const value = pages?.value;
55
- // 仅处理 pages 为数组字面量的情形
56
- if (!value || value?.type !== 'ArrayExpression')
57
- return page_1.ConfigModificationState.Fail;
58
- const isPageExists = Boolean(value.elements.find((node) => node.value === page));
59
- if (isPageExists)
60
- return page_1.ConfigModificationState.NeedLess;
61
- const newArrayElement = t.stringLiteral(page);
62
- value.elements.push(newArrayElement);
63
- return page_1.ConfigModificationState.Success;
64
- };
65
- const modifyPages = (path, newPageConfig, callback) => {
66
- let state = page_1.ConfigModificationState.Fail;
67
- const node = path.node.declaration;
68
- // Case 1. `export default defineAppConfig({})` 这种情况
69
- if (node.type === 'CallExpression' && node.callee.name === 'defineAppConfig') {
70
- const configNode = node.arguments[0];
71
- state = addNewPage(configNode, newPageConfig.page);
72
- }
73
- // Case 2. `export default {}` 这种情况
74
- if (node.type === 'ObjectExpression') {
75
- state = addNewPage(node, newPageConfig.page);
76
- }
77
- callback(state);
78
- };
79
- const modifySubPackages = (path, newPageConfig, callback) => {
80
- let state = page_1.ConfigModificationState.Fail;
81
- const node = path.node.declaration;
82
- // `export default defineAppConfig({})` 这种情况
83
- if (node.type === 'CallExpression' && node.callee.name === 'defineAppConfig') {
84
- const configNode = node.arguments[0];
85
- state = addNewSubPackage(configNode, newPageConfig.page, newPageConfig.pkg);
86
- }
87
- // `export default {}` 这种情况
88
- if (node.type === 'ObjectExpression') {
89
- state = addNewSubPackage(node, newPageConfig.page, newPageConfig.pkg);
90
- }
91
- callback(state);
92
- };
93
- const generateNewPageConfig = (fullPagePath, subPkgRootPath = '') => {
94
- const newPageConfig = {
95
- pkg: '',
96
- page: '',
97
- };
98
- if (subPkgRootPath) {
99
- const processedSubPkg = `${subPkgRootPath}/`;
100
- newPageConfig.pkg = processedSubPkg;
101
- newPageConfig.page = fullPagePath.split(processedSubPkg)[1];
102
- }
103
- else {
104
- newPageConfig.page = fullPagePath;
105
- }
106
- return newPageConfig;
107
- };
108
- const modifyPagesOrSubPackages = (params) => {
109
- const { fullPagePath, subPkgRootPath, callback, path } = params;
110
- const newPageConfig = generateNewPageConfig(fullPagePath, subPkgRootPath);
111
- subPkgRootPath ? modifySubPackages(path, newPageConfig, callback) : modifyPages(path, newPageConfig, callback);
112
- };
113
- exports.modifyPagesOrSubPackages = modifyPagesOrSubPackages;
114
- //# sourceMappingURL=createPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPage.js","sourceRoot":"","sources":["../../src/util/createPage.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { Kernel } from '@spcsn/taro-service';
2
-
3
- export default function customCommand(command: string, kernel: Kernel, args: { _: string[]; [key: string]: any }) {
4
- if (typeof command === 'string') {
5
- const options: any = {};
6
- const excludeKeys = ['_', 'version', 'v', 'help', 'h', 'disable-global-config'];
7
- Object.keys(args).forEach((key) => {
8
- if (!excludeKeys.includes(key)) {
9
- options[key] = args[key];
10
- }
11
- });
12
-
13
- kernel.run({
14
- name: command,
15
- opts: {
16
- _: args._,
17
- options,
18
- isHelp: args.h,
19
- },
20
- });
21
- }
22
- }
@@ -1,20 +0,0 @@
1
- const packagesManagement = {
2
- yarn: {
3
- command: 'yarn install',
4
- globalCommand: 'yarn global add @spcsn/taro-cli',
5
- },
6
- pnpm: {
7
- command: 'pnpm install',
8
- globalCommand: 'pnpm add -g @spcsn/taro-cli',
9
- },
10
- cnpm: {
11
- command: 'cnpm install',
12
- globalCommand: 'cnpm i -g @spcsn/taro-cli',
13
- },
14
- npm: {
15
- command: 'npm install',
16
- globalCommand: 'npm i -g @spcsn/taro-cli',
17
- },
18
- };
19
-
20
- export default packagesManagement;
@@ -1,4 +0,0 @@
1
- {
2
- "extends": "stylelint-config-taro-rn",
3
- "rules": {}
4
- }
@@ -1,325 +0,0 @@
1
- import * as path from 'node:path';
2
-
3
- import {
4
- CompilerType,
5
- createPage as createPageBinding,
6
- CSSType,
7
- FrameworkType,
8
- NpmType,
9
- PeriodType,
10
- } from '@spcsn/taro-binding';
11
- import {
12
- babelKit,
13
- chalk,
14
- DEFAULT_TEMPLATE_SRC,
15
- fs,
16
- getUserHomeDir,
17
- resolveScriptPath,
18
- TARO_BASE_CONFIG,
19
- TARO_CONFIG_FOLDER,
20
- } from '@spcsn/taro-helper';
21
-
22
- import { getPkgVersion, getRootPath, isNil } from '../util';
23
- import { modifyPagesOrSubPackages } from '../util/createPage';
24
- import { TEMPLATE_CREATOR } from './constants';
25
- import Creator from './creator';
26
- import fetchTemplate from './fetchTemplate';
27
-
28
- export interface IPageConf {
29
- projectDir: string;
30
- projectName: string;
31
- npm: NpmType;
32
- template: string;
33
- clone?: boolean;
34
- templateSource?: string;
35
- description?: string;
36
- pageName: string;
37
- date?: string;
38
- framework: FrameworkType;
39
- css: CSSType;
40
- typescript?: boolean;
41
- compiler?: CompilerType;
42
- isCustomTemplate?: boolean;
43
- customTemplatePath?: string;
44
- pageDir?: string;
45
- subPkg?: string;
46
- }
47
- interface IPageArgs extends IPageConf {
48
- modifyCustomTemplateConfig: TGetCustomTemplate;
49
- afterCreate?: TAfterCreate;
50
- }
51
- interface ITemplateInfo {
52
- css: CSSType;
53
- typescript?: boolean;
54
- compiler?: CompilerType;
55
- template?: string;
56
- templateSource?: string;
57
- clone?: boolean;
58
- }
59
-
60
- type TCustomTemplateInfo = Omit<
61
- ITemplateInfo & {
62
- isCustomTemplate?: boolean;
63
- customTemplatePath?: string;
64
- },
65
- 'template'
66
- >;
67
-
68
- export type TSetCustomTemplateConfig = (customTemplateConfig: TCustomTemplateInfo) => void;
69
-
70
- type TGetCustomTemplate = (cb: TSetCustomTemplateConfig) => Promise<void>;
71
- type TAfterCreate = (state: boolean) => void;
72
-
73
- const DEFAULT_TEMPLATE_INFO = {
74
- name: 'default',
75
- css: CSSType.None,
76
- typescript: false,
77
- compiler: CompilerType.Vite,
78
- framework: FrameworkType.React,
79
- };
80
-
81
- export enum ConfigModificationState {
82
- Success,
83
- Fail,
84
- NeedLess,
85
- }
86
-
87
- export type ModifyCallback = (state: ConfigModificationState) => void;
88
-
89
- export default class Page extends Creator {
90
- public rootPath: string;
91
- public conf: IPageConf;
92
- private modifyCustomTemplateConfig: TGetCustomTemplate;
93
- private afterCreate: TAfterCreate | undefined;
94
- private pageEntryPath!: string;
95
-
96
- constructor(args: IPageArgs) {
97
- super();
98
- this.rootPath = this._rootPath;
99
- const { modifyCustomTemplateConfig, afterCreate, ...otherOptions } = args;
100
- this.conf = Object.assign(
101
- {
102
- projectDir: '',
103
- projectName: '',
104
- template: '',
105
- description: '',
106
- pageDir: '',
107
- },
108
- otherOptions,
109
- );
110
-
111
- this.conf.projectName = path.basename(this.conf.projectDir);
112
- this.modifyCustomTemplateConfig = modifyCustomTemplateConfig;
113
- this.afterCreate = afterCreate;
114
- this.processPageName();
115
- }
116
-
117
- processPageName() {
118
- const { pageName } = this.conf;
119
- // todo 目前还没有对 subPkg 和 pageName 这两个字段做 格式验证或者处理
120
- const lastDirSplitSymbolIndex = pageName.lastIndexOf('/');
121
- if (lastDirSplitSymbolIndex !== -1) {
122
- this.conf.pageDir = pageName.substring(0, lastDirSplitSymbolIndex);
123
- this.conf.pageName = pageName.substring(lastDirSplitSymbolIndex + 1);
124
- }
125
- }
126
-
127
- getPkgPath() {
128
- const projectDir = this.conf.projectDir as string;
129
- let pkgPath = path.join(projectDir, 'package.json');
130
- if (!fs.existsSync(pkgPath)) {
131
- // 适配 云开发 项目
132
- pkgPath = path.join(projectDir, 'client', 'package.json');
133
- if (!fs.existsSync(pkgPath)) {
134
- console.log(chalk.yellow('请在项目根目录下执行 taro create 命令!'));
135
- process.exit(0);
136
- }
137
- }
138
- return pkgPath;
139
- }
140
-
141
- getPkgTemplateInfo() {
142
- const pkg = fs.readJSONSync(this.getPkgPath());
143
- const templateInfo = pkg.templateInfo || DEFAULT_TEMPLATE_INFO;
144
- // set template name
145
- templateInfo.template = templateInfo.name;
146
- delete templateInfo.name;
147
- return templateInfo;
148
- }
149
-
150
- setPageEntryPath(files: string[], handler) {
151
- const configFileName = files.find((filename) => /\.config\.(js|ts)$/.test(filename));
152
- if (!configFileName) return;
153
- const getPageFn = handler[configFileName];
154
- const { setPageName = '', setSubPkgName = '' } = getPageFn?.(() => {}, this.conf) || {};
155
- if (this.conf.subPkg) {
156
- this.pageEntryPath = setSubPkgName.replace(/\.config\.(js|ts)$/, '');
157
- } else {
158
- this.pageEntryPath = setPageName.replace(/\.config\.(js|ts)$/, '');
159
- }
160
- }
161
-
162
- setCustomTemplateConfig(customTemplateConfig: TCustomTemplateInfo) {
163
- const pkgTemplateInfo = this.getPkgTemplateInfo();
164
- const { compiler, css, customTemplatePath, typescript } = customTemplateConfig;
165
- const conf = {
166
- compiler: compiler || pkgTemplateInfo.compiler,
167
- css: css || pkgTemplateInfo.css,
168
- typescript: !isNil(typescript) ? typescript : pkgTemplateInfo.typescript,
169
- customTemplatePath,
170
- isCustomTemplate: true,
171
- };
172
- this.setTemplateConfig(conf);
173
- }
174
-
175
- setTemplateConfig(templateInfo: ITemplateInfo) {
176
- this.conf = Object.assign(this.conf, templateInfo);
177
- }
178
-
179
- async fetchTemplates() {
180
- const homedir = getUserHomeDir();
181
- let templateSource = DEFAULT_TEMPLATE_SRC;
182
- if (!homedir) chalk.yellow('找不到用户根目录,使用默认模版源!');
183
-
184
- if (this.conf.templateSource) {
185
- templateSource = this.conf.templateSource;
186
- } else {
187
- const taroConfigPath = path.join(homedir, TARO_CONFIG_FOLDER);
188
- const taroConfig = path.join(taroConfigPath, TARO_BASE_CONFIG);
189
- if (fs.existsSync(taroConfig)) {
190
- const config = await fs.readJSON(taroConfig);
191
- templateSource = config && config.templateSource ? config.templateSource : DEFAULT_TEMPLATE_SRC;
192
- } else {
193
- await fs.createFile(taroConfig);
194
- await fs.writeJSON(taroConfig, { templateSource });
195
- templateSource = DEFAULT_TEMPLATE_SRC;
196
- }
197
- }
198
-
199
- // 从模板源下载模板
200
- await fetchTemplate(templateSource, this.templatePath(''), this.conf.clone);
201
- }
202
-
203
- async create() {
204
- const date = new Date();
205
- this.conf.date = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
206
- // apply 插件,由插件设置自定义模版 config
207
- await this.modifyCustomTemplateConfig(this.setCustomTemplateConfig.bind(this));
208
- if (!this.conf.isCustomTemplate) {
209
- const pkgTemplateInfo = this.getPkgTemplateInfo();
210
- this.setTemplateConfig(pkgTemplateInfo);
211
- if (!fs.existsSync(this.templatePath(this.conf.template))) {
212
- await this.fetchTemplates();
213
- }
214
- }
215
- this.write();
216
- }
217
-
218
- updateAppConfig() {
219
- const { parse, generate, traverse } = babelKit;
220
-
221
- let modifyState: ConfigModificationState = ConfigModificationState.Fail;
222
- const { subPkg, projectDir, typescript } = this.conf;
223
- const [sourceString, pageString] = this.pageEntryPath.split('/src/');
224
- const appConfigPath = resolveScriptPath(path.join(projectDir, sourceString, 'src', 'app.config'));
225
- if (!fs.existsSync(appConfigPath)) {
226
- return console.log(
227
- `${chalk.red('x ')}${chalk.grey(`无法获取 ${appConfigPath} 配置文件,请手动到配置文件中补全新页面信息`)}`,
228
- );
229
- }
230
- const configFileContent = fs.readFileSync(appConfigPath, 'utf-8');
231
- const ast = parse(configFileContent, {
232
- sourceType: 'module',
233
- plugins: typescript ? ['typescript'] : [],
234
- });
235
-
236
- const callback = (state: ConfigModificationState) => {
237
- modifyState = state;
238
- };
239
-
240
- traverse(ast as any, {
241
- ExportDefaultDeclaration(path) {
242
- modifyPagesOrSubPackages({
243
- path: path as any,
244
- fullPagePath: pageString,
245
- subPkgRootPath: subPkg,
246
- callback,
247
- });
248
- },
249
- });
250
-
251
- switch (modifyState as ConfigModificationState) {
252
- case ConfigModificationState.Fail:
253
- console.log(
254
- `${chalk.red('x ')}${chalk.grey(`自动补全新页面信息失败, 请手动到 ${appConfigPath} 文件中补全新页面信息`)}`,
255
- );
256
- break;
257
- case ConfigModificationState.Success: {
258
- const newCode = generate(ast as any, { retainLines: true });
259
- fs.writeFileSync(appConfigPath, newCode.code);
260
- console.log(`${chalk.green('✔ ')}${chalk.grey(`新页面信息已在 ${appConfigPath} 文件中自动补全`)}`);
261
- break;
262
- }
263
- case ConfigModificationState.NeedLess:
264
- console.log(`${chalk.green('✔ ')}${chalk.grey(`新页面信息已存在在 ${appConfigPath} 文件中,不需要补全`)}`);
265
- break;
266
- }
267
- }
268
-
269
- write() {
270
- const { projectName, projectDir, template, pageName, isCustomTemplate, customTemplatePath, subPkg, pageDir } = this
271
- .conf as IPageConf;
272
- let templatePath;
273
-
274
- if (isCustomTemplate) {
275
- templatePath = customTemplatePath;
276
- } else {
277
- templatePath = this.templatePath(template);
278
- }
279
-
280
- if (!fs.existsSync(templatePath)) return console.log(chalk.red(`创建页面错误:找不到模板${templatePath}`));
281
-
282
- // 引入模板编写者的自定义逻辑
283
- const handlerPath = path.join(templatePath, TEMPLATE_CREATOR);
284
- const basePageFiles = fs.existsSync(handlerPath) ? require(handlerPath).basePageFiles : [];
285
- const files = Array.isArray(basePageFiles) ? basePageFiles : [];
286
- const handler = fs.existsSync(handlerPath) ? require(handlerPath).handler : {};
287
-
288
- this.setPageEntryPath(files, handler);
289
-
290
- createPageBinding(
291
- {
292
- pageDir,
293
- subPkg,
294
- projectDir,
295
- projectName,
296
- template,
297
- framework: this.conf.framework,
298
- css: this.conf.css || CSSType.None,
299
- typescript: this.conf.typescript,
300
- compiler: this.conf.compiler,
301
- templateRoot: getRootPath(),
302
- version: getPkgVersion(),
303
- date: this.conf.date,
304
- description: this.conf.description,
305
- pageName,
306
- isCustomTemplate,
307
- customTemplatePath,
308
- basePageFiles: files,
309
- period: PeriodType.CreatePage,
310
- },
311
- handler,
312
- )
313
- .then(() => {
314
- console.log(`${chalk.green('✔ ')}${chalk.grey(`创建页面 ${this.conf.pageName} 成功!`)}`);
315
- this.updateAppConfig();
316
- this.afterCreate && this.afterCreate(true);
317
- })
318
- .catch((err) => {
319
- console.log(err);
320
- this.afterCreate && this.afterCreate(false);
321
- });
322
- }
323
- }
324
-
325
- export type { Page as PageCreator };
@@ -1,55 +0,0 @@
1
- import * as path from 'node:path';
2
-
3
- import { createPlugin } from '@spcsn/taro-binding';
4
- import { chalk, fs } from '@spcsn/taro-helper';
5
-
6
- import { getRootPath } from '../util';
7
- import Creator from './creator';
8
-
9
- export interface IPluginConf {
10
- pluginName: string;
11
- type: string;
12
- description?: string;
13
- projectDir: string;
14
- projectName: string;
15
- template: string;
16
- version: string;
17
- }
18
-
19
- export default class Plugin extends Creator {
20
- public conf: IPluginConf;
21
-
22
- constructor(options: IPluginConf) {
23
- super();
24
- this.conf = {
25
- ...options,
26
- projectName: path.basename(options.projectDir),
27
- version: this.getCliVersion(),
28
- };
29
- }
30
-
31
- getCliVersion() {
32
- const pkgPath = path.join(this._rootPath, 'package.json');
33
- const pkg = fs.readJSONSync(pkgPath);
34
- return pkg.version;
35
- }
36
-
37
- async create() {
38
- const { projectDir, template, pluginName } = this.conf;
39
- const templatePath = this.templatePath(template);
40
-
41
- if (!fs.existsSync(templatePath)) {
42
- console.log(chalk.red(`创建插件失败:找不到模板${templatePath}`));
43
- return;
44
- }
45
- createPlugin({
46
- projectRoot: projectDir,
47
- projectName: pluginName,
48
- templateRoot: getRootPath(),
49
- template,
50
- version: this.conf.version,
51
- description: this.conf.description,
52
- pluginType: this.conf.type,
53
- });
54
- }
55
- }
@@ -1,86 +0,0 @@
1
- import * as path from 'node:path';
2
-
3
- import type { IPluginContext } from '@spcsn/taro-service';
4
-
5
- export default (ctx: IPluginContext) => {
6
- ctx.registerCommand({
7
- name: 'config',
8
- optionsMap: {
9
- '--json': '以 JSON 形式输出',
10
- },
11
- synopsisList: [
12
- 'taro config set <key> <value>',
13
- 'taro config get <key>',
14
- 'taro config delete <key>',
15
- 'taro config list [--json]',
16
- ],
17
- fn({ _, options }) {
18
- const [, cmd, key, value] = _;
19
- const json = !!options.json;
20
- const { fs, getUserHomeDir, TARO_CONFIG_FOLDER, TARO_BASE_CONFIG } = ctx.helper;
21
- const homedir = getUserHomeDir();
22
- const configPath = path.join(homedir, `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
23
- if (!homedir) return console.log('找不到用户根目录');
24
-
25
- function displayConfigPath(configPath) {
26
- console.log(`Config path: ${configPath}`);
27
- console.log();
28
- }
29
-
30
- switch (cmd) {
31
- case 'get':
32
- if (!key) return console.log('Usage: taro config get <key>');
33
- if (fs.existsSync(configPath)) {
34
- displayConfigPath(configPath);
35
- const config = fs.readJSONSync(configPath);
36
- console.log(`key: ${key}, value: ${config[key]}`);
37
- }
38
- break;
39
- case 'set':
40
- if (!key || !value) return console.log('Usage: taro config set <key> <value>');
41
-
42
- if (fs.existsSync(configPath)) {
43
- displayConfigPath(configPath);
44
- const config = fs.readJSONSync(configPath);
45
- config[key] = value;
46
- fs.writeJSONSync(configPath, config);
47
- } else {
48
- fs.ensureFileSync(configPath);
49
- fs.writeJSONSync(configPath, {
50
- [key]: value,
51
- });
52
- }
53
- console.log(`set key: ${key}, value: ${value}`);
54
- break;
55
- case 'delete':
56
- if (!key) return console.log('Usage: taro config delete <key>');
57
-
58
- if (fs.existsSync(configPath)) {
59
- displayConfigPath(configPath);
60
- const config = fs.readJSONSync(configPath);
61
- delete config[key];
62
- fs.writeJSONSync(configPath, config);
63
- }
64
- console.log(`deleted: ${key}`);
65
- break;
66
- case 'list':
67
- case 'ls':
68
- if (fs.existsSync(configPath)) {
69
- displayConfigPath(configPath);
70
- console.log('Config info:');
71
- const config = fs.readJSONSync(configPath);
72
- if (json) {
73
- console.log(JSON.stringify(config, null, 2));
74
- } else {
75
- for (const key in config) {
76
- console.log(`${key}=${config[key]}`);
77
- }
78
- }
79
- }
80
- break;
81
- default:
82
- break;
83
- }
84
- },
85
- });
86
- };