@giteeteam/apps-cli 0.3.2 → 0.4.1

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 (2) hide show
  1. package/dist/index.js +101 -110
  2. package/package.json +11 -6
package/dist/index.js CHANGED
@@ -3,12 +3,16 @@
3
3
 
4
4
  require('dotenv/config');
5
5
  var commander = require('commander');
6
- var appsBundler = require('@giteeteam/apps-bundler');
7
6
  var fse = require('fs-extra');
8
7
  var path = require('path');
9
8
  var archiver = require('archiver');
9
+ var rollup = require('rollup');
10
+ var fs = require('fs');
11
+ var esbuild$1 = require('esbuild');
12
+ var pluginNodeResolve = require('@rollup/plugin-node-resolve');
13
+ var commonjs = require('@rollup/plugin-commonjs');
10
14
  var ora = require('ora');
11
- var yaml = require('yaml');
15
+ var appsManifest = require('@giteeteam/apps-manifest');
12
16
  var inquirer = require('inquirer');
13
17
  var simpleGit = require('simple-git');
14
18
  var chalk = require('chalk');
@@ -22,6 +26,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
22
26
  var fse__default = /*#__PURE__*/_interopDefaultLegacy(fse);
23
27
  var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
24
28
  var archiver__default = /*#__PURE__*/_interopDefaultLegacy(archiver);
29
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
30
+ var commonjs__default = /*#__PURE__*/_interopDefaultLegacy(commonjs);
25
31
  var ora__default = /*#__PURE__*/_interopDefaultLegacy(ora);
26
32
  var inquirer__default = /*#__PURE__*/_interopDefaultLegacy(inquirer);
27
33
  var simpleGit__default = /*#__PURE__*/_interopDefaultLegacy(simpleGit);
@@ -30,7 +36,7 @@ var execa__default = /*#__PURE__*/_interopDefaultLegacy(execa);
30
36
  var child_process__default = /*#__PURE__*/_interopDefaultLegacy(child_process);
31
37
  var chokidar__default = /*#__PURE__*/_interopDefaultLegacy(chokidar);
32
38
 
33
- var version = "0.3.2";
39
+ var version = "0.4.1";
34
40
 
35
41
  const packageApp = async ({ outputDir, manifest, copyFiles }) => {
36
42
  const { resources } = manifest;
@@ -89,11 +95,98 @@ const archiveApp = async (archiveDir, pkgName) => {
89
95
  });
90
96
  };
91
97
 
98
+ const defaultOptions = {
99
+ treeShaking: true,
100
+ format: 'esm',
101
+ loader: 'tsx',
102
+ };
103
+ function esbuild(options) {
104
+ options = { ...defaultOptions, ...options };
105
+ return {
106
+ name: 'esbuild',
107
+ resolveId(source, importer, opts) {
108
+ // console.log('resolveId:');
109
+ // console.dir({ source, importer, opts }, { depth: null });
110
+ if (!importer || ['.ts', '.tsx', '.js', '.jsx'].some(ext => source.endsWith(ext))) {
111
+ return source;
112
+ }
113
+ const dirPath = path.dirname(importer);
114
+ let path$1;
115
+ if (fs.existsSync((path$1 = path.resolve(dirPath, source, 'index.ts')))) {
116
+ return path$1;
117
+ }
118
+ else if (fs.existsSync((path$1 = path.resolve(dirPath, source, 'index.tsx')))) {
119
+ return path$1;
120
+ }
121
+ else if (fs.existsSync((path$1 = path.resolve(dirPath, source + '.ts')))) {
122
+ return path$1;
123
+ }
124
+ else if (fs.existsSync((path$1 = path.resolve(dirPath, source + '.tsx')))) {
125
+ return path$1;
126
+ }
127
+ else {
128
+ console.error({ source, importer, options: opts });
129
+ path$1 = path.relative('.', path.resolve(importer, source));
130
+ throw new Error(`ENOENT: ${path$1.replace(/\\/g, '/')}`);
131
+ }
132
+ },
133
+ async transform(src, id) {
134
+ options.sourcefile = id;
135
+ const { code, map } = await esbuild$1.transform(src, options);
136
+ if (!map)
137
+ return code;
138
+ return { code, map };
139
+ },
140
+ };
141
+ }
142
+
143
+ var MODE;
144
+ (function (MODE) {
145
+ MODE["DEV"] = "development";
146
+ MODE["PROD"] = "production";
147
+ })(MODE || (MODE = {}));
148
+ function getRollupOptions(input, outputFile, mode = MODE.DEV) {
149
+ const plugins = [pluginNodeResolve.nodeResolve(), commonjs__default["default"]()];
150
+ plugins.push(esbuild({
151
+ sourcemap: mode === MODE.DEV,
152
+ minify: mode !== MODE.DEV,
153
+ target: 'es2018',
154
+ jsx: 'transform',
155
+ jsxFactory: 'AppsUI.createElement',
156
+ jsxFragment: 'AppsUI.Fragment',
157
+ }));
158
+ const inputOptions = {
159
+ input,
160
+ plugins,
161
+ };
162
+ const outputOptions = {
163
+ file: outputFile,
164
+ format: 'es',
165
+ sourcemap: mode === MODE.DEV,
166
+ };
167
+ return { inputOptions, outputOptions };
168
+ }
169
+ async function bundle(opts) {
170
+ const { fileName, inputDir, outputDir, mode = MODE.DEV } = opts;
171
+ const input = path__default["default"].join(inputDir, `${fileName}.ts`);
172
+ try {
173
+ await fs__default["default"].promises.access(input);
174
+ }
175
+ catch (e) {
176
+ console.error(`${input} is not exist`);
177
+ return;
178
+ }
179
+ const outputFile = path__default["default"].join(outputDir, `${fileName}.js`);
180
+ const { inputOptions, outputOptions } = getRollupOptions(input, outputFile, mode);
181
+ const build = await rollup.rollup(inputOptions);
182
+ await build.write(outputOptions);
183
+ }
184
+
92
185
  const bundleApp = async (opts) => {
93
186
  const { manifest, mode, outputDir, inputDir } = opts;
94
187
  const functionFiles = manifest.getFunctionFiles();
95
188
  const bundlePromise = functionFiles.map(async (fileName) => {
96
- await appsBundler.bundle({
189
+ await bundle({
97
190
  inputDir,
98
191
  fileName,
99
192
  outputDir,
@@ -116,112 +209,10 @@ const execActionWithSpinner = async (message, action) => {
116
209
  spinner.succeed(message.succeed);
117
210
  };
118
211
 
119
- class Manifest {
120
- constructor(manifestString) {
121
- this.manifest = yaml.parse(manifestString);
122
- this.manifestString = manifestString;
123
- }
124
- get resources() {
125
- return this.manifest.resources;
126
- }
127
- get app() {
128
- return this.manifest.app;
129
- }
130
- get tables() {
131
- return this.manifest.tables;
132
- }
133
- getManifest() {
134
- return this.manifest;
135
- }
136
- getManifestString() {
137
- return this.manifestString;
138
- }
139
- /**
140
- * 获取所有自定义事项类型
141
- */
142
- getCustomItemType() {
143
- const { modules } = this.manifest;
144
- return modules.customItemType || [];
145
- }
146
- /**
147
- * 获取所有自定义字段类型
148
- */
149
- getCustomFieldType() {
150
- const { modules } = this.manifest;
151
- return modules.customFieldType || [];
152
- }
153
- /**
154
- * 获取所有自定义字段
155
- */
156
- getCustomField() {
157
- const { modules } = this.manifest;
158
- return modules.customField || [];
159
- }
160
- /**
161
- * 根据key获取执行的function
162
- * @param key
163
- * @returns
164
- */
165
- getFunctionByKey(key) {
166
- const functionKey = this.getFunctionKeyByKey(key);
167
- if (functionKey) {
168
- return this.getFunctionByFunctionKey(functionKey);
169
- }
170
- }
171
- /**
172
- * 根据functionKey获取执行的function
173
- * @param functionKey
174
- * @returns
175
- */
176
- getFunctionByFunctionKey(functionKey) {
177
- var _a, _b;
178
- return (_b = (_a = this.manifest.modules) === null || _a === void 0 ? void 0 : _a.function) === null || _b === void 0 ? void 0 : _b.find(f => f.key === functionKey);
179
- }
180
- /**
181
- * 根据key获取执行的functionKey
182
- * @param key
183
- * @returns
184
- */
185
- getFunctionKeyByKey(key) {
186
- var _a, _b, _c;
187
- const { modules } = this.manifest;
188
- for (const k in modules) {
189
- if (k === 'function') {
190
- continue;
191
- }
192
- else if (k === 'importer') {
193
- // importer扩展点需要判断function和validate
194
- if (key === ((_a = modules[k]) === null || _a === void 0 ? void 0 : _a.function) || key === ((_b = modules[k]) === null || _b === void 0 ? void 0 : _b.validate)) {
195
- return key;
196
- }
197
- }
198
- else if (Array.isArray(modules[k])) {
199
- const targetModule = (_c = modules[k]) === null || _c === void 0 ? void 0 : _c.find(v => v.key === key);
200
- if (targetModule) {
201
- return targetModule.function;
202
- }
203
- }
204
- }
205
- }
206
- /**
207
- * 获取function下的文件列表
208
- * @returns
209
- */
210
- getFunctionFiles() {
211
- var _a, _b;
212
- const fileNames = new Set();
213
- (_b = (_a = this.manifest.modules) === null || _a === void 0 ? void 0 : _a.function) === null || _b === void 0 ? void 0 : _b.forEach(({ handler }) => {
214
- const filename = handler.split('.')[0];
215
- fileNames.add(filename);
216
- });
217
- return [...fileNames];
218
- }
219
- }
220
-
221
212
  const getManifest = async () => {
222
213
  const manifestFile = path__default["default"].resolve('manifest.yml');
223
214
  const strBuffer = await fse__default["default"].readFile(manifestFile);
224
- return new Manifest(strBuffer.toString());
215
+ return new appsManifest.Manifest(strBuffer.toString());
225
216
  };
226
217
 
227
218
  var run$2 = async ({ outputDir, inputDir, prod, copyFiles, zip }) => {
@@ -242,7 +233,7 @@ var run$2 = async ({ outputDir, inputDir, prod, copyFiles, zip }) => {
242
233
  start: 'start bundle',
243
234
  error: 'bundle failed',
244
235
  succeed: 'bundle success',
245
- }, () => bundleApp({ outputDir, inputDir, manifest, mode: prod ? appsBundler.MODE.PROD : appsBundler.MODE.DEV }));
236
+ }, () => bundleApp({ outputDir, inputDir, manifest, mode: prod ? MODE.PROD : MODE.DEV }));
246
237
  // package
247
238
  await execActionWithSpinner({
248
239
  start: 'start package',
@@ -495,11 +486,11 @@ class DockerService {
495
486
 
496
487
  const build = (functionFiles, inputDir, outputDir) => {
497
488
  for (const fileName of functionFiles) {
498
- appsBundler.bundle({
489
+ bundle({
499
490
  inputDir,
500
491
  outputDir,
501
492
  fileName,
502
- mode: appsBundler.MODE.DEV,
493
+ mode: MODE.DEV,
503
494
  });
504
495
  }
505
496
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giteeteam/apps-cli",
3
- "version": "0.3.2",
3
+ "version": "0.4.1",
4
4
  "description": "Giteeteam Apps cli",
5
5
  "keywords": [
6
6
  "typescript",
@@ -27,6 +27,7 @@
27
27
  "dev": "tsc -w",
28
28
  "build": "rm -rf dist && rollup -c",
29
29
  "prepublish": "pnpm build",
30
+ "prepack": "pnpm build",
30
31
  "unlink": "yarn unlink",
31
32
  "link": "chmod +x ./dist/index.js && yarn link && yarn link '@giteeteam/apps-cli' -g",
32
33
  "build-link": "pnpm build && yarn run link"
@@ -37,25 +38,29 @@
37
38
  "registry": "https://registry.npmjs.org/"
38
39
  },
39
40
  "dependencies": {
40
- "@giteeteam/apps-bundler": "^0.2.3",
41
- "@giteeteam/apps-manifest": "^0.2.1",
41
+ "@giteeteam/apps-manifest": "^0.3.0",
42
+ "@rollup/plugin-commonjs": "^22.0.0",
43
+ "@rollup/plugin-node-resolve": "^15.0.1",
42
44
  "archiver": "^5.3.1",
43
45
  "chalk": "^4.1.2",
44
46
  "chokidar": "^3.5.3",
45
47
  "commander": "^9.3.0",
46
48
  "dotenv": "^16.0.2",
49
+ "esbuild": "^0.16.11",
47
50
  "execa": "^5.1.1",
48
51
  "fs-extra": "^10.1.0",
49
52
  "inquirer": "^8.2.4",
50
53
  "ora": "^5.4.1",
54
+ "rollup": "^2.79.0",
51
55
  "simple-git": "^3.7.1",
52
56
  "yaml": "^2.1.1"
53
57
  },
54
58
  "devDependencies": {
59
+ "@rollup/plugin-json": "^6.0.0",
55
60
  "@types/archiver": "^5.3.1",
56
61
  "@types/fs-extra": "^9.0.13",
57
62
  "@types/inquirer": "^8.2.1",
58
- "@types/uuid": "^8.3.4"
59
- },
60
- "gitHead": "d93f769e76519925ce83d4bc71defcfdd3eee085"
63
+ "@types/uuid": "^8.3.4",
64
+ "rollup-plugin-typescript2": "^0.31.2"
65
+ }
61
66
  }