@spcsn/taro-cli 0.1.5 → 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 (220) hide show
  1. package/README.md +37 -0
  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/__tests__/__mocks__/presets.ts +0 -15
  166. package/src/__tests__/build-config.spec.ts +0 -66
  167. package/src/__tests__/cli.spec.ts +0 -226
  168. package/src/__tests__/config.spec.ts +0 -224
  169. package/src/__tests__/doctor-config.spec.ts +0 -918
  170. package/src/__tests__/doctor-recommand.spec.ts +0 -136
  171. package/src/__tests__/doctor.spec.ts +0 -94
  172. package/src/__tests__/dotenv-parse.spec.ts +0 -105
  173. package/src/__tests__/env/.env +0 -2
  174. package/src/__tests__/fixtures/default/.env +0 -3
  175. package/src/__tests__/fixtures/default/.env.development +0 -1
  176. package/src/__tests__/fixtures/default/.env.local +0 -1
  177. package/src/__tests__/fixtures/default/.env.pre +0 -3
  178. package/src/__tests__/fixtures/default/.env.production +0 -1
  179. package/src/__tests__/fixtures/default/.env.uat +0 -5
  180. package/src/__tests__/fixtures/default/.env.uat.local +0 -1
  181. package/src/__tests__/fixtures/default/babel.config.js +0 -10
  182. package/src/__tests__/fixtures/default/config/dev.js +0 -9
  183. package/src/__tests__/fixtures/default/config/index.js +0 -84
  184. package/src/__tests__/fixtures/default/config/prod.js +0 -18
  185. package/src/__tests__/fixtures/default/package.json +0 -27
  186. package/src/__tests__/fixtures/default/src/app.config.js +0 -11
  187. package/src/__tests__/fixtures/default/src/app.js +0 -16
  188. package/src/__tests__/fixtures/default/src/app.scss +0 -0
  189. package/src/__tests__/fixtures/default/src/index.html +0 -19
  190. package/src/__tests__/fixtures/default/src/pages/index/index.config.js +0 -3
  191. package/src/__tests__/fixtures/default/src/pages/index/index.jsx +0 -22
  192. package/src/__tests__/fixtures/default/src/pages/index/index.scss +0 -0
  193. package/src/__tests__/info.spec.ts +0 -72
  194. package/src/__tests__/inspect.spec.ts +0 -160
  195. package/src/__tests__/update.spec.ts +0 -310
  196. package/src/__tests__/utils/index.ts +0 -54
  197. package/src/commands/customCommand.ts +0 -22
  198. package/src/config/packagesManagement.ts +0 -20
  199. package/src/config/rn-stylelint.json +0 -4
  200. package/src/create/page.ts +0 -325
  201. package/src/create/plugin.ts +0 -55
  202. package/src/presets/commands/config.ts +0 -86
  203. package/src/presets/commands/create.ts +0 -104
  204. package/src/presets/commands/doctor.ts +0 -21
  205. package/src/presets/commands/global-config.ts +0 -140
  206. package/src/presets/commands/help.ts +0 -17
  207. package/src/presets/commands/info.ts +0 -81
  208. package/src/presets/commands/inspect.ts +0 -137
  209. package/src/presets/commands/update.ts +0 -175
  210. package/src/presets/hooks/create.ts +0 -9
  211. package/src/presets/platforms/plugin.ts +0 -75
  212. package/src/presets/platforms/rn.ts +0 -125
  213. package/src/util/createPage.ts +0 -139
  214. package/templates/default/babel.config.js +0 -14
  215. /package/dist/create/{fetchTemplate.d.ts → fetch-template.d.ts} +0 -0
  216. /package/dist/presets/{commands/config.d.ts → files/generate-framework-info.d.ts} +0 -0
  217. /package/dist/presets/{commands/create.d.ts → files/generate-project-config.d.ts} +0 -0
  218. /package/dist/presets/{commands/doctor.d.ts → files/write-file-to-dist.d.ts} +0 -0
  219. /package/src/presets/files/{generateProjectConfig.ts → generate-project-config.ts} +0 -0
  220. /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,15 +0,0 @@
1
- import * as path from 'node:path';
2
-
3
- export default () => {
4
- return {
5
- plugins: [
6
- // hooks
7
- path.resolve(__dirname, '../../presets', 'hooks', 'build.ts'),
8
-
9
- // 兼容其他平台小程序插件
10
- path.resolve(__dirname, '../../presets', 'files', 'writeFileToDist.ts'),
11
- path.resolve(__dirname, '../../presets', 'files', 'generateProjectConfig.ts'),
12
- path.resolve(__dirname, '../../presets', 'files', 'generateFrameworkInfo.ts'),
13
- ],
14
- };
15
- };
@@ -1,66 +0,0 @@
1
- import * as path from 'node:path';
2
-
3
- import { emptyDirectory } from '@spcsn/taro-helper';
4
-
5
- import { run } from './utils';
6
-
7
- const runBuild = run('build', ['commands/build', require.resolve('@spcsn/taro-plugin-platform-weapp')]);
8
-
9
- jest.mock('@spcsn/taro-helper', () => {
10
- const helper = jest.requireActual('@spcsn/taro-helper');
11
- const fs = helper.fs;
12
- return {
13
- __esModule: true,
14
- ...helper,
15
- emptyDirectory: jest.fn(),
16
- fs: {
17
- ...fs,
18
- },
19
- };
20
- });
21
-
22
- const APP_PATH = path.join(__dirname, 'fixtures/default');
23
- const OUTPUT_PATH = path.join(__dirname, 'fixtures/default/dist');
24
-
25
- describe('构建配置测试', () => {
26
- const emptyDirectoryMocked = emptyDirectory as jest.Mock<any>;
27
-
28
- beforeEach(() => {
29
- emptyDirectoryMocked.mockReset();
30
- process.argv = [];
31
- });
32
-
33
- afterEach(() => {
34
- process.argv = [];
35
- emptyDirectoryMocked.mockReset();
36
- });
37
-
38
- describe('小程序', () => {
39
- it(`项目 output.clean = clean: { keep: ['project.config.json'] } ==> 清空dist文件夹但保留指定文件`, async () => {
40
- const exitSpy = jest.spyOn(process, 'exit') as jest.SpyInstance<void, any>;
41
- const logSpy = jest.spyOn(console, 'log');
42
- const errorSpy = jest.spyOn(console, 'error');
43
- logSpy.mockImplementation(() => {});
44
- errorSpy.mockImplementation(() => {});
45
- exitSpy.mockImplementation(() => {
46
- throw new Error();
47
- });
48
-
49
- try {
50
- await runBuild(APP_PATH, {
51
- options: {
52
- type: 'weapp',
53
- platform: 'weapp',
54
- },
55
- });
56
- } catch (error) {
57
- // no handler
58
- }
59
- expect(emptyDirectoryMocked).toBeCalledWith(OUTPUT_PATH, { excludes: ['project.config.json'] });
60
-
61
- exitSpy.mockRestore();
62
- logSpy.mockRestore();
63
- errorSpy.mockRestore();
64
- });
65
- });
66
- });
@@ -1,226 +0,0 @@
1
- import { Kernel } from '@spcsn/taro-service';
2
-
3
- import CLI from '../cli';
4
- import { getPkgVersion } from '../util';
5
-
6
- jest.mock('@spcsn/taro-service');
7
- const MockedKernel = Kernel as unknown as jest.Mock<Kernel>;
8
- const APP_PATH = '/a/b/c';
9
-
10
- function setProcessArgv(cmd: string) {
11
- // @ts-ignore
12
- process.argv = [null, ...cmd.split(' ')];
13
- }
14
-
15
- describe('inspect', () => {
16
- let cli: CLI;
17
-
18
- beforeAll(() => {
19
- cli = new CLI(APP_PATH);
20
- });
21
-
22
- beforeEach(() => {
23
- MockedKernel.mockClear();
24
- process.argv = [];
25
- delete process.env.NODE_ENV;
26
- delete process.env.TARO_ENV;
27
- });
28
-
29
- afterEach(() => {
30
- MockedKernel.mockClear();
31
- process.argv = [];
32
- delete process.env.NODE_ENV;
33
- delete process.env.TARO_ENV;
34
- });
35
-
36
- describe('build', () => {
37
- const baseOpts = {
38
- _: ['build'],
39
- options: {
40
- args: expect.any(Object),
41
- platform: undefined,
42
- publicPath: undefined,
43
- isWatch: false,
44
- withoutBuild: false,
45
- env: undefined,
46
- blended: false,
47
- assetsDest: undefined,
48
- bundleOutput: undefined,
49
- plugin: undefined,
50
- isBuildNativeComp: false,
51
- newBlended: false,
52
- noInjectGlobalStyle: false,
53
- noCheck: false,
54
- sourceMapUrl: undefined,
55
- sourcemapOutput: undefined,
56
- sourcemapSourcesRoot: undefined,
57
- },
58
- isHelp: false,
59
- };
60
-
61
- it('should make configs', async () => {
62
- const platform = 'weapp';
63
- setProcessArgv('taro build --type weapp --watch --port 8080');
64
- await cli.run();
65
- const ins = MockedKernel.mock.instances[0];
66
-
67
- const opts = Object.assign({}, baseOpts);
68
- opts.options = Object.assign({}, baseOpts.options, {
69
- platform,
70
- isWatch: true,
71
- port: 8080,
72
- deviceType: undefined,
73
- resetCache: false,
74
- qr: false,
75
- });
76
-
77
- expect(ins.run).toHaveBeenCalledWith({
78
- name: 'build',
79
- opts,
80
- });
81
- });
82
-
83
- it('should not set node env again', async () => {
84
- process.env.NODE_ENV = 'development';
85
- setProcessArgv('taro build --type weapp');
86
- await cli.run();
87
- expect(process.env.NODE_ENV).toEqual('development');
88
- });
89
-
90
- it.skip('should make plugin config', async () => {
91
- setProcessArgv('taro build --plugin');
92
- await cli.run();
93
- const ins = MockedKernel.mock.instances[0];
94
- expect(ins.run).toHaveBeenCalledWith({
95
- name: 'build',
96
- opts: Object.assign({}, baseOpts, {
97
- platform: 'plugin',
98
- plugin: 'weapp',
99
- }),
100
- });
101
- expect(process.env.NODE_ENV).toEqual('production');
102
- expect(process.env.TARO_ENV).toEqual('plugin');
103
- });
104
- });
105
-
106
- describe('init', () => {
107
- it('should make configs', async () => {
108
- const projectName = 'temp';
109
- const templateSource = 'https://url';
110
- const template = 'mobx';
111
- const css = 'sass';
112
- setProcessArgv('taro init temp --typescript --template-source=https://url --clone --template mobx --css sass');
113
- await cli.run();
114
- const ins = MockedKernel.mock.instances[0];
115
- expect(ins.run).toHaveBeenCalledWith({
116
- name: 'init',
117
- opts: {
118
- _: ['init', 'temp'],
119
- options: {
120
- appPath: APP_PATH,
121
- projectName,
122
- typescript: true,
123
- templateSource,
124
- description: undefined,
125
- clone: true,
126
- template,
127
- css,
128
- },
129
- isHelp: false,
130
- },
131
- });
132
- });
133
-
134
- it('should set project name', async () => {
135
- const projectName = 'demo';
136
- setProcessArgv('taro init --name demo');
137
- await cli.run();
138
- const ins = MockedKernel.mock.instances[0];
139
- expect(ins.run).toHaveBeenCalledWith({
140
- name: 'init',
141
- opts: {
142
- _: ['init'],
143
- options: {
144
- appPath: APP_PATH,
145
- projectName,
146
- typescript: undefined,
147
- templateSource: undefined,
148
- description: undefined,
149
- clone: false,
150
- template: undefined,
151
- css: undefined,
152
- },
153
- isHelp: false,
154
- },
155
- });
156
- });
157
- });
158
-
159
- describe('convert', () => {
160
- it('should make configs', async () => {
161
- setProcessArgv('taro convert');
162
- await cli.run();
163
- const ins = MockedKernel.mock.instances[0];
164
- expect(ins.run).toHaveBeenCalledWith({
165
- name: 'convert',
166
- opts: {
167
- _: ['convert'],
168
- options: {
169
- build: true,
170
- check: true,
171
- 'inject-global-style': true,
172
- },
173
- isHelp: false,
174
- },
175
- });
176
- });
177
- });
178
-
179
- describe('customCommand', () => {
180
- it('should make configs', async () => {
181
- const cmd = 'inspect';
182
- const _ = [cmd, 'entry'];
183
- const type = 'weapp';
184
- setProcessArgv('taro inspect entry --type weapp -h --version');
185
- await cli.run();
186
- const ins = MockedKernel.mock.instances[0];
187
- expect(ins.run).toHaveBeenCalledWith({
188
- name: cmd,
189
- opts: {
190
- _,
191
- options: {
192
- build: true,
193
- check: true,
194
- 'inject-global-style': true,
195
- type,
196
- },
197
- isHelp: true,
198
- },
199
- });
200
- });
201
- });
202
-
203
- describe('others', () => {
204
- it('should log helps', async () => {
205
- const spy = jest.spyOn(console, 'log');
206
- spy.mockImplementation(() => {});
207
-
208
- setProcessArgv('taro -h');
209
- await cli.run();
210
- expect(spy).toBeCalledTimes(16);
211
-
212
- spy.mockRestore();
213
- });
214
-
215
- it('should log version', async () => {
216
- const spy = jest.spyOn(console, 'log');
217
- spy.mockImplementation(() => {});
218
-
219
- setProcessArgv('taro -v');
220
- await cli.run();
221
- expect(spy).toBeCalledWith(getPkgVersion());
222
-
223
- spy.mockRestore();
224
- });
225
- });
226
- });
@@ -1,224 +0,0 @@
1
- import * as path from 'node:path';
2
-
3
- import { fs, getUserHomeDir, TARO_BASE_CONFIG, TARO_CONFIG_FOLDER } from '@spcsn/taro-helper';
4
- import { CONFIG_DIR_NAME, DEFAULT_CONFIG_FILE } from '@spcsn/taro-service/src/utils/constants';
5
-
6
- import { run } from './utils';
7
-
8
- jest.mock('@spcsn/taro-helper', () => {
9
- const helper = jest.requireActual('@spcsn/taro-helper');
10
- const fs = helper.fs;
11
- return {
12
- __esModule: true,
13
- ...helper,
14
- getUserHomeDir: jest.fn(),
15
- fs: {
16
- ...fs,
17
- existsSync: jest.fn(),
18
- readJSONSync: jest.fn(),
19
- writeJSONSync: jest.fn(),
20
- ensureFileSync: jest.fn(),
21
- },
22
- };
23
- });
24
-
25
- const runConfig = run('config', ['commands/config']);
26
-
27
- describe('config', () => {
28
- const getUserHomeDirMocked = getUserHomeDir as jest.Mock<any>;
29
- const existsSyncMocked = fs.existsSync as jest.Mock<any>;
30
- const readJSONSyncMocked = fs.readJSONSync as jest.Mock<any>;
31
- const writeJSONSyncMocked = fs.writeJSONSync as jest.Mock<any>;
32
- const ensureFileSyncMocked = fs.ensureFileSync as jest.Mock<any>;
33
- const appPath = '/';
34
-
35
- beforeEach(() => {
36
- getUserHomeDirMocked.mockReturnValue(appPath);
37
- // Note: 设置项目配置文件为不存在,config 指令不一定在项目内执行,故而当前测试跳过配置(与过往配置保持一致,后续可视情况调整)
38
- existsSyncMocked.mockImplementation(
39
- (filePath = '') => !filePath.includes(path.join(appPath, CONFIG_DIR_NAME, DEFAULT_CONFIG_FILE)),
40
- );
41
- });
42
-
43
- afterEach(() => {
44
- getUserHomeDirMocked.mockReset();
45
- existsSyncMocked.mockReset();
46
- });
47
-
48
- it("should exit because can't find home dir", async () => {
49
- const logSpy = jest.spyOn(console, 'log');
50
- logSpy.mockImplementation(() => {});
51
-
52
- getUserHomeDirMocked.mockReturnValue('');
53
-
54
- await runConfig(appPath);
55
-
56
- expect(logSpy).toBeCalledWith('找不到用户根目录');
57
- logSpy.mockRestore();
58
- });
59
-
60
- it('should warn when getting config without args key', async () => {
61
- const logSpy = jest.spyOn(console, 'log');
62
- logSpy.mockImplementation(() => {});
63
-
64
- await runConfig(appPath, { args: ['get'] });
65
-
66
- expect(logSpy).toBeCalledWith('Usage: taro config get <key>');
67
- logSpy.mockRestore();
68
- });
69
-
70
- it('should get config', async () => {
71
- const key = 'k';
72
- const value = 'v';
73
- const configPath = path.join('/', `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
74
-
75
- const logSpy = jest.spyOn(console, 'log');
76
- logSpy.mockImplementation(() => {});
77
- readJSONSyncMocked.mockImplementation(() => ({
78
- [key]: value,
79
- }));
80
-
81
- await runConfig(appPath, { args: ['get', key] });
82
-
83
- expect(logSpy).nthCalledWith(1, `Config path: ${configPath}`);
84
- expect(logSpy).nthCalledWith(2);
85
- expect(logSpy).nthCalledWith(3, `key: ${key}, value: ${value}`);
86
-
87
- logSpy.mockRestore();
88
- readJSONSyncMocked.mockReset();
89
- });
90
-
91
- it('should warn when getting config without args value', async () => {
92
- const logSpy = jest.spyOn(console, 'log');
93
- logSpy.mockImplementation(() => {});
94
-
95
- await runConfig(appPath, { args: ['set', 'k'] });
96
-
97
- expect(logSpy).toBeCalledWith('Usage: taro config set <key> <value>');
98
- logSpy.mockRestore();
99
- });
100
-
101
- it('should set config', async () => {
102
- const key = 'k';
103
- const value = 'v';
104
- const configPath = path.join('/', `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
105
-
106
- const logSpy = jest.spyOn(console, 'log');
107
- logSpy.mockImplementation(() => {});
108
- readJSONSyncMocked.mockReturnValue({ a: 1 });
109
-
110
- await runConfig(appPath, { args: ['set', key, value] });
111
-
112
- expect(writeJSONSyncMocked).toBeCalledWith(configPath, {
113
- a: 1,
114
- [key]: value,
115
- });
116
- expect(logSpy).nthCalledWith(1, `Config path: ${configPath}`);
117
- expect(logSpy).nthCalledWith(2);
118
- expect(logSpy).nthCalledWith(3, `set key: ${key}, value: ${value}`);
119
-
120
- logSpy.mockRestore();
121
- readJSONSyncMocked.mockReset();
122
- writeJSONSyncMocked.mockClear();
123
- });
124
-
125
- it('should set config with init', async () => {
126
- const key = 'k';
127
- const value = 'v';
128
- const configPath = path.join('/', `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
129
-
130
- const logSpy = jest.spyOn(console, 'log');
131
- logSpy.mockImplementation(() => {});
132
- existsSyncMocked.mockReturnValue(false);
133
-
134
- await runConfig(appPath, { args: ['set', key, value] });
135
-
136
- expect(ensureFileSyncMocked).toBeCalledWith(configPath);
137
- expect(writeJSONSyncMocked).toBeCalledWith(configPath, { [key]: value });
138
- expect(logSpy).toBeCalledWith(`set key: ${key}, value: ${value}`);
139
-
140
- logSpy.mockRestore();
141
- existsSyncMocked.mockReset();
142
- ensureFileSyncMocked.mockClear();
143
- writeJSONSyncMocked.mockClear();
144
- });
145
-
146
- it('should warn when deleting config without args key', async () => {
147
- const logSpy = jest.spyOn(console, 'log');
148
- logSpy.mockImplementation(() => {});
149
-
150
- await runConfig(appPath, { args: ['delete'] });
151
-
152
- expect(logSpy).toBeCalledWith('Usage: taro config delete <key>');
153
- logSpy.mockRestore();
154
- });
155
-
156
- it('should delete config', async () => {
157
- const key = 'k';
158
- const configPath = path.join('/', `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
159
-
160
- const logSpy = jest.spyOn(console, 'log');
161
- logSpy.mockImplementation(() => {});
162
- readJSONSyncMocked.mockReturnValue({
163
- a: 1,
164
- [key]: 'v',
165
- });
166
-
167
- await runConfig(appPath, { args: ['delete', key] });
168
-
169
- expect(writeJSONSyncMocked).toBeCalledWith(configPath, { a: 1 });
170
- expect(logSpy).nthCalledWith(1, `Config path: ${configPath}`);
171
- expect(logSpy).nthCalledWith(2);
172
- expect(logSpy).nthCalledWith(3, `deleted: ${key}`);
173
-
174
- logSpy.mockRestore();
175
- readJSONSyncMocked.mockReset();
176
- writeJSONSyncMocked.mockClear();
177
- });
178
-
179
- it('should list config', async () => {
180
- const configPath = path.join('/', `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
181
- const logSpy = jest.spyOn(console, 'log');
182
- logSpy.mockImplementation(() => {});
183
- readJSONSyncMocked.mockReturnValue({
184
- a: 1,
185
- b: 2,
186
- });
187
-
188
- await runConfig(appPath, { args: ['list'] });
189
-
190
- expect(logSpy).nthCalledWith(1, `Config path: ${configPath}`);
191
- expect(logSpy).nthCalledWith(2);
192
- expect(logSpy).nthCalledWith(3, 'Config info:');
193
- expect(logSpy).nthCalledWith(4, 'a=1');
194
- expect(logSpy).nthCalledWith(5, 'b=2');
195
-
196
- logSpy.mockRestore();
197
- readJSONSyncMocked.mockReset();
198
- });
199
-
200
- it('should list config in json', async () => {
201
- const configPath = path.join('/', `${TARO_CONFIG_FOLDER}/${TARO_BASE_CONFIG}`);
202
- const logSpy = jest.spyOn(console, 'log');
203
- logSpy.mockImplementation(() => {});
204
- readJSONSyncMocked.mockReturnValue({
205
- a: 1,
206
- b: 2,
207
- });
208
-
209
- await runConfig(appPath, {
210
- args: ['list'],
211
- options: {
212
- json: true,
213
- },
214
- });
215
-
216
- expect(logSpy).nthCalledWith(1, `Config path: ${configPath}`);
217
- expect(logSpy).nthCalledWith(2);
218
- expect(logSpy).nthCalledWith(3, 'Config info:');
219
- expect(logSpy).nthCalledWith(4, JSON.stringify({ a: 1, b: 2 }, null, 2));
220
-
221
- logSpy.mockRestore();
222
- readJSONSyncMocked.mockReset();
223
- });
224
- });