@spcsn/taro-cli 0.1.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 (213) hide show
  1. package/LICENSE +174 -0
  2. package/README.md +0 -0
  3. package/bin/taro +7 -0
  4. package/dist/cli.d.ts +6 -0
  5. package/dist/cli.js +266 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/customCommand.d.ts +5 -0
  8. package/dist/commands/customCommand.js +23 -0
  9. package/dist/commands/customCommand.js.map +1 -0
  10. package/dist/config/index.d.ts +8 -0
  11. package/dist/config/index.js +10 -0
  12. package/dist/config/index.js.map +1 -0
  13. package/dist/config/packagesManagement.d.ts +19 -0
  14. package/dist/config/packagesManagement.js +22 -0
  15. package/dist/config/packagesManagement.js.map +1 -0
  16. package/dist/create/constants.d.ts +1 -0
  17. package/dist/create/constants.js +5 -0
  18. package/dist/create/constants.js.map +1 -0
  19. package/dist/create/creator.d.ts +9 -0
  20. package/dist/create/creator.js +64 -0
  21. package/dist/create/creator.js.map +1 -0
  22. package/dist/create/fetchTemplate.d.ts +8 -0
  23. package/dist/create/fetchTemplate.js +169 -0
  24. package/dist/create/fetchTemplate.js.map +1 -0
  25. package/dist/create/page.d.ts +65 -0
  26. package/dist/create/page.js +266 -0
  27. package/dist/create/page.js.map +1 -0
  28. package/dist/create/plugin.d.ts +16 -0
  29. package/dist/create/plugin.js +77 -0
  30. package/dist/create/plugin.js.map +1 -0
  31. package/dist/create/project.d.ts +70 -0
  32. package/dist/create/project.js +481 -0
  33. package/dist/create/project.js.map +1 -0
  34. package/dist/doctor/index.d.ts +4 -0
  35. package/dist/doctor/index.js +23 -0
  36. package/dist/doctor/index.js.map +1 -0
  37. package/dist/index.d.ts +16 -0
  38. package/dist/index.js +24 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/presets/commands/build.d.ts +3 -0
  41. package/dist/presets/commands/build.js +236 -0
  42. package/dist/presets/commands/build.js.map +1 -0
  43. package/dist/presets/commands/config.d.ts +3 -0
  44. package/dist/presets/commands/config.js +121 -0
  45. package/dist/presets/commands/config.js.map +1 -0
  46. package/dist/presets/commands/create.d.ts +3 -0
  47. package/dist/presets/commands/create.js +112 -0
  48. package/dist/presets/commands/create.js.map +1 -0
  49. package/dist/presets/commands/global-config.d.ts +3 -0
  50. package/dist/presets/commands/global-config.js +175 -0
  51. package/dist/presets/commands/global-config.js.map +1 -0
  52. package/dist/presets/commands/help.d.ts +3 -0
  53. package/dist/presets/commands/help.js +16 -0
  54. package/dist/presets/commands/help.js.map +1 -0
  55. package/dist/presets/commands/info.d.ts +3 -0
  56. package/dist/presets/commands/info.js +96 -0
  57. package/dist/presets/commands/info.js.map +1 -0
  58. package/dist/presets/commands/init.d.ts +3 -0
  59. package/dist/presets/commands/init.js +46 -0
  60. package/dist/presets/commands/init.js.map +1 -0
  61. package/dist/presets/commands/inspect.d.ts +3 -0
  62. package/dist/presets/commands/inspect.js +155 -0
  63. package/dist/presets/commands/inspect.js.map +1 -0
  64. package/dist/presets/commands/update.d.ts +3 -0
  65. package/dist/presets/commands/update.js +187 -0
  66. package/dist/presets/commands/update.js.map +1 -0
  67. package/dist/presets/constant/hooks.d.ts +13 -0
  68. package/dist/presets/constant/hooks.js +17 -0
  69. package/dist/presets/constant/hooks.js.map +1 -0
  70. package/dist/presets/constant/index.d.ts +1 -0
  71. package/dist/presets/constant/index.js +18 -0
  72. package/dist/presets/constant/index.js.map +1 -0
  73. package/dist/presets/files/generateFrameworkInfo.d.ts +3 -0
  74. package/dist/presets/files/generateFrameworkInfo.js +30 -0
  75. package/dist/presets/files/generateFrameworkInfo.js.map +1 -0
  76. package/dist/presets/files/generateProjectConfig.d.ts +3 -0
  77. package/dist/presets/files/generateProjectConfig.js +72 -0
  78. package/dist/presets/files/generateProjectConfig.js.map +1 -0
  79. package/dist/presets/files/writeFileToDist.d.ts +3 -0
  80. package/dist/presets/files/writeFileToDist.js +50 -0
  81. package/dist/presets/files/writeFileToDist.js.map +1 -0
  82. package/dist/presets/hooks/build.d.ts +3 -0
  83. package/dist/presets/hooks/build.js +55 -0
  84. package/dist/presets/hooks/build.js.map +1 -0
  85. package/dist/presets/hooks/create.d.ts +3 -0
  86. package/dist/presets/hooks/create.js +42 -0
  87. package/dist/presets/hooks/create.js.map +1 -0
  88. package/dist/presets/index.d.ts +4 -0
  89. package/dist/presets/index.js +50 -0
  90. package/dist/presets/index.js.map +1 -0
  91. package/dist/presets/platforms/plugin.d.ts +3 -0
  92. package/dist/presets/platforms/plugin.js +106 -0
  93. package/dist/presets/platforms/plugin.js.map +1 -0
  94. package/dist/presets/platforms/rn.d.ts +3 -0
  95. package/dist/presets/platforms/rn.js +130 -0
  96. package/dist/presets/platforms/rn.js.map +1 -0
  97. package/dist/util/appConfig.d.ts +11 -0
  98. package/dist/util/appConfig.js +27 -0
  99. package/dist/util/appConfig.js.map +1 -0
  100. package/dist/util/createPage.d.ts +9 -0
  101. package/dist/util/createPage.js +114 -0
  102. package/dist/util/createPage.js.map +1 -0
  103. package/dist/util/defineConfig.d.ts +17 -0
  104. package/dist/util/defineConfig.js +11 -0
  105. package/dist/util/defineConfig.js.map +1 -0
  106. package/dist/util/index.d.ts +23 -0
  107. package/dist/util/index.js +149 -0
  108. package/dist/util/index.js.map +1 -0
  109. package/dist/util/types.d.ts +58 -0
  110. package/dist/util/types.js +3 -0
  111. package/dist/util/types.js.map +1 -0
  112. package/global.d.ts +4 -0
  113. package/index.js +3 -0
  114. package/package.json +74 -0
  115. package/postinstall.js +17 -0
  116. package/src/__tests__/__mocks__/presets.ts +15 -0
  117. package/src/__tests__/build-config.spec.ts +66 -0
  118. package/src/__tests__/cli.spec.ts +226 -0
  119. package/src/__tests__/config.spec.ts +224 -0
  120. package/src/__tests__/doctor-config.spec.ts +943 -0
  121. package/src/__tests__/doctor-recommand.spec.ts +136 -0
  122. package/src/__tests__/doctor.spec.ts +94 -0
  123. package/src/__tests__/dotenv-parse.spec.ts +105 -0
  124. package/src/__tests__/env/.env +2 -0
  125. package/src/__tests__/fixtures/default/.env +3 -0
  126. package/src/__tests__/fixtures/default/.env.development +1 -0
  127. package/src/__tests__/fixtures/default/.env.local +1 -0
  128. package/src/__tests__/fixtures/default/.env.pre +3 -0
  129. package/src/__tests__/fixtures/default/.env.production +1 -0
  130. package/src/__tests__/fixtures/default/.env.uat +5 -0
  131. package/src/__tests__/fixtures/default/.env.uat.local +1 -0
  132. package/src/__tests__/fixtures/default/babel.config.js +10 -0
  133. package/src/__tests__/fixtures/default/config/dev.js +9 -0
  134. package/src/__tests__/fixtures/default/config/index.js +84 -0
  135. package/src/__tests__/fixtures/default/config/prod.js +18 -0
  136. package/src/__tests__/fixtures/default/package.json +27 -0
  137. package/src/__tests__/fixtures/default/src/app.config.js +11 -0
  138. package/src/__tests__/fixtures/default/src/app.js +16 -0
  139. package/src/__tests__/fixtures/default/src/app.scss +0 -0
  140. package/src/__tests__/fixtures/default/src/index.html +19 -0
  141. package/src/__tests__/fixtures/default/src/pages/index/index.config.js +3 -0
  142. package/src/__tests__/fixtures/default/src/pages/index/index.jsx +22 -0
  143. package/src/__tests__/fixtures/default/src/pages/index/index.scss +0 -0
  144. package/src/__tests__/info.spec.ts +72 -0
  145. package/src/__tests__/inspect.spec.ts +160 -0
  146. package/src/__tests__/update.spec.ts +310 -0
  147. package/src/__tests__/utils/index.ts +54 -0
  148. package/src/cli.ts +240 -0
  149. package/src/commands/customCommand.ts +22 -0
  150. package/src/config/index.ts +7 -0
  151. package/src/config/manifest.default.json +33 -0
  152. package/src/config/packagesManagement.ts +20 -0
  153. package/src/config/rn-stylelint.json +4 -0
  154. package/src/config/tsconfig.json +22 -0
  155. package/src/create/constants.ts +1 -0
  156. package/src/create/creator.ts +37 -0
  157. package/src/create/fetchTemplate.ts +161 -0
  158. package/src/create/page.ts +325 -0
  159. package/src/create/plugin.ts +55 -0
  160. package/src/create/project.ts +539 -0
  161. package/src/doctor/index.ts +21 -0
  162. package/src/index.ts +24 -0
  163. package/src/presets/commands/build.ts +215 -0
  164. package/src/presets/commands/config.ts +86 -0
  165. package/src/presets/commands/create.ts +104 -0
  166. package/src/presets/commands/global-config.ts +140 -0
  167. package/src/presets/commands/help.ts +17 -0
  168. package/src/presets/commands/info.ts +81 -0
  169. package/src/presets/commands/init.ts +63 -0
  170. package/src/presets/commands/inspect.ts +137 -0
  171. package/src/presets/commands/update.ts +175 -0
  172. package/src/presets/constant/hooks.ts +14 -0
  173. package/src/presets/constant/index.ts +1 -0
  174. package/src/presets/files/generateFrameworkInfo.ts +30 -0
  175. package/src/presets/files/generateProjectConfig.ts +41 -0
  176. package/src/presets/files/writeFileToDist.ts +17 -0
  177. package/src/presets/hooks/build.ts +22 -0
  178. package/src/presets/hooks/create.ts +9 -0
  179. package/src/presets/index.ts +15 -0
  180. package/src/presets/platforms/plugin.ts +75 -0
  181. package/src/presets/platforms/rn.ts +125 -0
  182. package/src/util/appConfig.ts +32 -0
  183. package/src/util/createPage.ts +139 -0
  184. package/src/util/defineConfig.ts +28 -0
  185. package/src/util/index.ts +126 -0
  186. package/src/util/types.ts +81 -0
  187. package/templates/default/_editorconfig +12 -0
  188. package/templates/default/_env.development +2 -0
  189. package/templates/default/_env.production +1 -0
  190. package/templates/default/_env.test +1 -0
  191. package/templates/default/_gitignore +8 -0
  192. package/templates/default/babel.config.js +14 -0
  193. package/templates/default/config/dev.js +5 -0
  194. package/templates/default/config/index.js +61 -0
  195. package/templates/default/config/prod.js +5 -0
  196. package/templates/default/package.json.tmpl +52 -0
  197. package/templates/default/project.config.json +15 -0
  198. package/templates/default/src/app.config.js +11 -0
  199. package/templates/default/src/app.css +0 -0
  200. package/templates/default/src/app.js +15 -0
  201. package/templates/default/src/pages/index/index.config.js +3 -0
  202. package/templates/default/src/pages/index/index.css +0 -0
  203. package/templates/default/src/pages/index/index.jsx +15 -0
  204. package/templates/default/template_creator.js +61 -0
  205. package/templates/default/tsconfig.json +30 -0
  206. package/templates/default/types/global.d.ts +27 -0
  207. package/templates/global-config/index.json +4 -0
  208. package/templates/global-config/package.json +5 -0
  209. package/templates/plugin-compile/README.md +32 -0
  210. package/templates/plugin-compile/index.js +3 -0
  211. package/templates/plugin-compile/package.json.tmpl +43 -0
  212. package/templates/plugin-compile/src/index.ts +153 -0
  213. package/templates/plugin-compile/tsconfig.json +28 -0
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const path = __importStar(require("node:path"));
37
+ const taro_helper_1 = require("@spcsn/taro-helper");
38
+ const taro_shared_1 = require("@spcsn/taro-shared");
39
+ const configName = 'mini';
40
+ exports.default = (ctx) => {
41
+ ctx.registerPlatform({
42
+ name: 'plugin',
43
+ useConfigName: configName,
44
+ async fn({ config }) {
45
+ const { options, _ } = ctx.runOpts;
46
+ const { chalk, PLATFORMS } = ctx.helper;
47
+ const { WEAPP } = PLATFORMS;
48
+ const typeMap = {
49
+ [WEAPP]: '微信',
50
+ };
51
+ const { plugin, isWatch } = options;
52
+ if (plugin !== WEAPP) {
53
+ console.log(chalk.red('当前 Fork 仅支持微信小程序插件编译!'));
54
+ return;
55
+ }
56
+ console.log(chalk.green(`开始编译${typeMap[plugin]}小程序插件`));
57
+ async function buildPlugin(platform) {
58
+ process.env.TARO_ENV = platform;
59
+ process.env.TARO_PLATFORM = (0, taro_shared_1.getPlatformType)(platform, configName);
60
+ await ctx.applyPlugins({
61
+ name: 'build',
62
+ opts: {
63
+ config: {
64
+ ...config,
65
+ isBuildPlugin: true,
66
+ isWatch,
67
+ outputRoot: `${config.outputRoot}/plugin`,
68
+ platform,
69
+ },
70
+ options: Object.assign({}, options, {
71
+ platform,
72
+ }),
73
+ _,
74
+ },
75
+ });
76
+ await ctx.applyPlugins({
77
+ name: 'build',
78
+ opts: {
79
+ config: {
80
+ ...config,
81
+ isBuildPlugin: false,
82
+ isWatch,
83
+ outputRoot: `${config.outputRoot}/miniprogram`,
84
+ platform,
85
+ output: { ...(config.output || {}), clean: false },
86
+ },
87
+ options: Object.assign({}, options, {
88
+ platform,
89
+ }),
90
+ _,
91
+ },
92
+ });
93
+ }
94
+ await buildPlugin(plugin);
95
+ try {
96
+ const docSrcPath = path.join(process.cwd(), 'src/plugin/doc');
97
+ const docDestPath = path.join(process.cwd(), 'miniprogram/doc');
98
+ taro_helper_1.fs.copy(docSrcPath, docDestPath);
99
+ }
100
+ catch (err) {
101
+ console.error('[@spcsn/taro-cli] build plugin doc failed: ', err);
102
+ }
103
+ },
104
+ });
105
+ };
106
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/presets/platforms/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { IPluginContext } from '@spcsn/taro-service';
2
+ declare const _default: (ctx: IPluginContext) => void;
3
+ export default _default;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("node:fs"));
37
+ const os = __importStar(require("node:os"));
38
+ const path = __importStar(require("node:path"));
39
+ const taro_helper_1 = require("@spcsn/taro-helper");
40
+ const child_process = __importStar(require("child_process"));
41
+ const util_1 = require("../../util");
42
+ function checkReactNativeDependencies(packageInfo) {
43
+ const packageNames = ['react', 'react-native', '@spcsn/taro-rn', '@spcsn/taro-rn-runner'];
44
+ const { dependencies, devDependencies } = packageInfo;
45
+ for (let i = 0; i < packageNames.length; i++) {
46
+ if (!dependencies[packageNames[i]] && !devDependencies[packageNames[i]]) {
47
+ return false;
48
+ }
49
+ }
50
+ return true;
51
+ }
52
+ function makeSureReactNativeInstalled(workspaceRoot) {
53
+ return new Promise((resolve, reject) => {
54
+ const packageInfo = JSON.parse(fs.readFileSync(path.join(workspaceRoot, 'package.json'), {
55
+ encoding: 'utf8',
56
+ }));
57
+ if (checkReactNativeDependencies(packageInfo)) {
58
+ resolve();
59
+ }
60
+ else {
61
+ // 便于开发时切换版本
62
+ const devTag = process.env.DEVTAG || '';
63
+ console.log('Installing React-Native related packages:');
64
+ let packages = `react@^18.2.0 react-dom@^18.2.0 react-native@^0.73.1 @react-native/metro-config@^0.73.2 expo@~50.0.2 @tarojs/taro-rn${devTag} @tarojs/components-rn${devTag} @tarojs/rn-runner${devTag} @tarojs/rn-supporter${devTag} @tarojs/runtime-rn${devTag}`;
65
+ console.log(packages);
66
+ // windows下不加引号的话,package.json中添加的依赖不会自动带上^
67
+ packages = packages
68
+ .split(' ')
69
+ .map((str) => `"${str}"`)
70
+ .join(' ');
71
+ let installCmd = `npm install ${packages} --save`;
72
+ if (fs.existsSync(path.join(workspaceRoot, 'yarn.lock'))) {
73
+ installCmd = `yarn add ${packages} --force`;
74
+ }
75
+ if (fs.existsSync(path.join(workspaceRoot, 'pnpm-lock.yaml'))) {
76
+ installCmd = `pnpm add ${packages}`;
77
+ }
78
+ child_process.exec(installCmd, (error) => {
79
+ if (error) {
80
+ reject(error);
81
+ return;
82
+ }
83
+ console.log(taro_helper_1.chalk.green(`React-Native related packages have been installed successfully.${os.EOL}${os.EOL}`));
84
+ console.log(`${taro_helper_1.chalk.yellow('ATTEHNTION')}: Package.json has been modified automatically, please submit it by yourself.${os.EOL}${os.EOL}`);
85
+ resolve();
86
+ });
87
+ }
88
+ });
89
+ }
90
+ exports.default = (ctx) => {
91
+ ctx.registerPlatform({
92
+ name: 'rn',
93
+ useConfigName: 'rn',
94
+ async fn({ config }) {
95
+ const { appPath, nodeModulesPath } = ctx.paths;
96
+ const { npm } = ctx.helper;
97
+ const { deviceType = 'android', port, resetCache, publicPath, bundleOutput, sourcemapOutput, sourceMapUrl, sourcemapSourcesRoot, assetsDest, qr, } = ctx.runOpts.options;
98
+ (0, util_1.printDevelopmentTip)('rn');
99
+ // 准备 rnRunner 参数
100
+ const rnRunnerOpts = {
101
+ ...config,
102
+ nodeModulesPath,
103
+ deviceType,
104
+ port,
105
+ qr,
106
+ resetCache,
107
+ publicPath,
108
+ bundleOutput,
109
+ sourcemapOutput,
110
+ sourceMapUrl,
111
+ sourcemapSourcesRoot,
112
+ assetsDest,
113
+ buildAdapter: config.platform,
114
+ };
115
+ if (!rnRunnerOpts.entry) {
116
+ rnRunnerOpts.entry = 'app';
117
+ }
118
+ makeSureReactNativeInstalled(appPath).then(async () => {
119
+ // build with metro
120
+ const rnRunner = await npm.getNpmPkg('@spcsn/taro-rn-runner', appPath);
121
+ await rnRunner(appPath, rnRunnerOpts);
122
+ }, (error) => {
123
+ console.log(taro_helper_1.chalk.red('Error when detecting React-Native packages:'));
124
+ console.log(error);
125
+ console.log(`${taro_helper_1.chalk.greenBright('TIP')}: 1) Try to remove React-Native dependencies in package.json and shoot again; 2) Install the packages above manually.`);
126
+ });
127
+ },
128
+ });
129
+ };
130
+ //# sourceMappingURL=rn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rn.js","sourceRoot":"","sources":["../../../src/presets/platforms/rn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { IPluginContext } from '@spcsn/taro-service';
2
+ import { AppConfig } from '@spcsn/taro';
3
+ /**
4
+ * 按需编译功能,只编译指定的页面或组件
5
+ * @param appConfig
6
+ * @param args
7
+ */
8
+ export declare function extractCompileEntry(appConfig: AppConfig, args: {
9
+ _: string[];
10
+ [key: string]: any;
11
+ }, ctx: IPluginContext): void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractCompileEntry = extractCompileEntry;
4
+ const taro_shared_1 = require("@spcsn/taro-shared");
5
+ /**
6
+ * 按需编译功能,只编译指定的页面或组件
7
+ * @param appConfig
8
+ * @param args
9
+ */
10
+ function extractCompileEntry(appConfig, args, ctx) {
11
+ const { chalk } = ctx.helper;
12
+ const extractType = (0, taro_shared_1.isString)(args.pages) ? 'pages' : (0, taro_shared_1.isString)(args.components) ? 'components' : '';
13
+ if (!extractType)
14
+ return;
15
+ const entries = args[extractType]
16
+ .split(',')
17
+ .map((item) => item.trim())
18
+ .filter(Boolean);
19
+ if (!entries.length) {
20
+ console.log(chalk.yellow(`按需编译开启失败,请指定要编译的${extractType}`));
21
+ return;
22
+ }
23
+ appConfig[extractType] = entries;
24
+ appConfig.subPackages = [];
25
+ console.log(chalk.green(`已开启按需编译,仅编译以下${extractType}: ${appConfig[extractType]}`));
26
+ }
27
+ //# sourceMappingURL=appConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appConfig.js","sourceRoot":"","sources":["../../src/util/appConfig.ts"],"names":[],"mappings":";;AASA,kDAsBC;AA9BD,oDAA8C;AAG9C;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,SAAoB,EACpB,IAAyC,EACzC,GAAmB;IAEnB,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAE7B,MAAM,WAAW,GAAG,IAAA,sBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,sBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,SAAS,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IACjC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,WAAW,KAAK,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ModifyCallback } from '../create/page';
2
+ import type { ExportDefaultDeclaration } from '@babel/types';
3
+ import type { NodePath } from 'babel__traverse';
4
+ export declare const modifyPagesOrSubPackages: (params: {
5
+ path: NodePath<ExportDefaultDeclaration>;
6
+ fullPagePath: string;
7
+ subPkgRootPath?: string;
8
+ callback: ModifyCallback;
9
+ }) => void;
@@ -0,0 +1,114 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPage.js","sourceRoot":"","sources":["../../src/util/createPage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { IProjectConfig } from '@spcsn/taro/types/compile';
2
+ import type { CompilerTypes, CompilerWebpackTypes } from '@spcsn/taro/types/compile/compiler';
3
+ type WebpackMerge = (...configs: Array<object | null | undefined>) => object;
4
+ export interface ConfigEnv {
5
+ /** taro 当前执行的命令 */
6
+ command: string;
7
+ /** 当前模式 (mode) */
8
+ mode: string;
9
+ }
10
+ export type UserConfigFn<T extends CompilerTypes = CompilerWebpackTypes> = (merge: WebpackMerge, env: ConfigEnv) => IProjectConfig<T> | Promise<IProjectConfig<T>>;
11
+ export type UserConfigExport<T extends CompilerTypes = CompilerWebpackTypes> = IProjectConfig<T> | Promise<IProjectConfig<T>> | UserConfigFn;
12
+ /**
13
+ * @since v3.6.9
14
+ * @warning 暂不支持 react native
15
+ */
16
+ export declare function defineConfig<T extends CompilerTypes = CompilerWebpackTypes>(config: UserConfigExport<T>): UserConfigExport<T>;
17
+ export {};
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = defineConfig;
4
+ /**
5
+ * @since v3.6.9
6
+ * @warning 暂不支持 react native
7
+ */
8
+ function defineConfig(config) {
9
+ return config;
10
+ }
11
+ //# sourceMappingURL=defineConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineConfig.js","sourceRoot":"","sources":["../../src/util/defineConfig.ts"],"names":[],"mappings":";;AAyBA,oCAEC;AAND;;;GAGG;AACH,SAAgB,YAAY,CAAiD,MAA2B;IACtG,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,23 @@
1
+ export declare function getRootPath(): string;
2
+ export declare function getPkgVersion(): string;
3
+ export declare function getPkgItemByKey(key: string): any;
4
+ export declare function printPkgVersion(): void;
5
+ export declare const getAllFilesInFolder: (folder: string, filter?: string[]) => Promise<string[]>;
6
+ export type TemplateSourceType = 'git' | 'url';
7
+ export declare function getTemplateSourceType(url: string): TemplateSourceType;
8
+ interface FileStat {
9
+ name: string;
10
+ isDirectory: boolean;
11
+ isFile: boolean;
12
+ }
13
+ export declare function readDirWithFileTypes(folder: string): FileStat[];
14
+ export declare function printDevelopmentTip(platform: string): void;
15
+ export declare function clearConsole(): void;
16
+ export declare function execCommand(params: {
17
+ command: string;
18
+ successCallback?: (data: string) => void;
19
+ failCallback?: (data: string) => void;
20
+ }): void;
21
+ export declare function getPkgNameByFilterVersion(pkgString: string): string;
22
+ export declare function isNil(value: any): value is null | undefined;
23
+ export {};
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getAllFilesInFolder = void 0;
37
+ exports.getRootPath = getRootPath;
38
+ exports.getPkgVersion = getPkgVersion;
39
+ exports.getPkgItemByKey = getPkgItemByKey;
40
+ exports.printPkgVersion = printPkgVersion;
41
+ exports.getTemplateSourceType = getTemplateSourceType;
42
+ exports.readDirWithFileTypes = readDirWithFileTypes;
43
+ exports.printDevelopmentTip = printDevelopmentTip;
44
+ exports.clearConsole = clearConsole;
45
+ exports.execCommand = execCommand;
46
+ exports.getPkgNameByFilterVersion = getPkgNameByFilterVersion;
47
+ exports.isNil = isNil;
48
+ const path = __importStar(require("node:path"));
49
+ const taro_helper_1 = require("@spcsn/taro-helper");
50
+ const child_process_1 = require("child_process");
51
+ function getRootPath() {
52
+ return path.resolve(__dirname, '../../');
53
+ }
54
+ function getPkgVersion() {
55
+ return require(path.join(getRootPath(), 'package.json')).version;
56
+ }
57
+ function getPkgItemByKey(key) {
58
+ const packageMap = require(path.join(getRootPath(), 'package.json'));
59
+ if (Object.keys(packageMap).indexOf(key) === -1) {
60
+ return {};
61
+ }
62
+ else {
63
+ return packageMap[key];
64
+ }
65
+ }
66
+ function printPkgVersion() {
67
+ const taroVersion = getPkgVersion();
68
+ console.log(`👽 Taro v${taroVersion}`);
69
+ console.log();
70
+ }
71
+ const getAllFilesInFolder = async (folder, filter = []) => {
72
+ let files = [];
73
+ const list = readDirWithFileTypes(folder);
74
+ await Promise.all(list.map(async (item) => {
75
+ const itemPath = path.join(folder, item.name);
76
+ if (item.isDirectory) {
77
+ const _files = await (0, exports.getAllFilesInFolder)(itemPath, filter);
78
+ files = [...files, ..._files];
79
+ }
80
+ else if (item.isFile) {
81
+ if (!filter.find((rule) => rule === item.name))
82
+ files.push(itemPath);
83
+ }
84
+ }));
85
+ return files;
86
+ };
87
+ exports.getAllFilesInFolder = getAllFilesInFolder;
88
+ function getTemplateSourceType(url) {
89
+ if (/^github:/.test(url) || /^gitlab:/.test(url) || /^direct:/.test(url)) {
90
+ return 'git';
91
+ }
92
+ else {
93
+ return 'url';
94
+ }
95
+ }
96
+ function readDirWithFileTypes(folder) {
97
+ const list = taro_helper_1.fs.readdirSync(folder);
98
+ const res = list.map((name) => {
99
+ const stat = taro_helper_1.fs.statSync(path.join(folder, name));
100
+ return {
101
+ name,
102
+ isDirectory: stat.isDirectory(),
103
+ isFile: stat.isFile(),
104
+ };
105
+ });
106
+ return res;
107
+ }
108
+ function printDevelopmentTip(platform) {
109
+ if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
110
+ let exampleCommand;
111
+ if (taro_helper_1.isWindows) {
112
+ exampleCommand = `$ set NODE_ENV=production && taro build --type ${platform} --watch`;
113
+ }
114
+ else {
115
+ exampleCommand = `$ NODE_ENV=production taro build --type ${platform} --watch`;
116
+ }
117
+ console.log(taro_helper_1.chalk.yellowBright(`Tips: 预览模式生成的文件较大,设置 NODE_ENV 为 production 可以开启压缩。
118
+ Example:
119
+ ${exampleCommand}
120
+ `));
121
+ }
122
+ }
123
+ function clearConsole() {
124
+ const readline = require('readline');
125
+ if (process.stdout.isTTY) {
126
+ const blank = '\n'.repeat(process.stdout.rows);
127
+ console.log(blank);
128
+ readline.cursorTo(process.stdout, 0, 0);
129
+ readline.clearScreenDown(process.stdout);
130
+ }
131
+ }
132
+ function execCommand(params) {
133
+ const { command, successCallback, failCallback } = params;
134
+ const child = (0, child_process_1.exec)(command);
135
+ child.stdout.on('data', function (data) {
136
+ successCallback?.(data);
137
+ });
138
+ child.stderr.on('data', function (data) {
139
+ failCallback?.(data);
140
+ });
141
+ }
142
+ function getPkgNameByFilterVersion(pkgString) {
143
+ const versionFlagIndex = pkgString.lastIndexOf('@');
144
+ return versionFlagIndex === 0 ? pkgString : pkgString.slice(0, versionFlagIndex);
145
+ }
146
+ function isNil(value) {
147
+ return value === null || value === undefined;
148
+ }
149
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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"}