@ray-js/builder-component 0.5.4 → 0.5.6-beta-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.
package/lib/build.d.ts CHANGED
@@ -2,6 +2,7 @@ import { CliOptions } from '@ray-js/types';
2
2
  declare type Options = Pick<CliOptions, 'source' | 'output' | 'watch'> & {
3
3
  cwd: string;
4
4
  transformMode: 'pure' | 'auto';
5
+ emitDeclarationDev: boolean;
5
6
  };
6
7
  export default function build(options: Options): Promise<void>;
7
8
  export {};
package/lib/build.js CHANGED
@@ -22,14 +22,32 @@ colors_1.default.enable();
22
22
  const LOG_PREFIX = 'builder-component';
23
23
  function build(options) {
24
24
  return __awaiter(this, void 0, void 0, function* () {
25
- const { cwd = process.cwd(), source = 'src', output = 'lib', watch = false, transformMode = 'auto', } = options;
25
+ const { cwd = process.cwd(), source = 'src', output = 'lib', watch = false, transformMode = 'auto', emitDeclarationDev = false, } = options;
26
26
  const sourceDir = path_1.default.join(cwd, source);
27
27
  const outputDir = path_1.default.join(cwd, output);
28
+ const emitDTS = (0, transform_1.generateDTS)((file, content) => {
29
+ const fileBase = path_1.default.relative(sourceDir, file);
30
+ const dtsFilePath = path_1.default.join(outputDir, fileBase);
31
+ (0, shared_1.writeFileSync)(dtsFilePath, content);
32
+ shared_1.log.verbose(LOG_PREFIX, fileBase.gray);
33
+ });
34
+ function genDTS(files) {
35
+ const dtsStartTime = Date.now();
36
+ shared_1.log.info(LOG_PREFIX, 'd.ts generating...'.yellow);
37
+ emitDTS(files);
38
+ shared_1.log.info(LOG_PREFIX, 'd.ts done.'.green, Date.now() - dtsStartTime, 'ms');
39
+ }
40
+ const files = globby_1.default.sync(['**/*.*', '!**/demos/**/*.*', '!**/__tests__/**/*.*'], {
41
+ dot: false,
42
+ cwd: sourceDir,
43
+ absolute: true,
44
+ });
28
45
  if (watch) {
29
46
  shared_1.log.info(LOG_PREFIX, 'watching...');
30
47
  const watcher = chokidar_1.default.watch(['**/*.*', '!**/demos/**/*.*', '!**/__tests__/**/*.*', '!**/*.md'], {
31
48
  cwd: sourceDir,
32
49
  });
50
+ const filesWaitForGenDTS = [...files];
33
51
  watcher.on('all', (event, filePath, _) => __awaiter(this, void 0, void 0, function* () {
34
52
  const file = path_1.default.join(sourceDir, filePath);
35
53
  if (event === 'change' || event === 'add') {
@@ -42,6 +60,15 @@ function build(options) {
42
60
  }).catch((error) => {
43
61
  console.error(error);
44
62
  });
63
+ if (emitDeclarationDev) {
64
+ const index = filesWaitForGenDTS.indexOf(file);
65
+ if (index === -1) {
66
+ genDTS([file]);
67
+ }
68
+ else {
69
+ filesWaitForGenDTS.splice(index, 1);
70
+ }
71
+ }
45
72
  }
46
73
  else {
47
74
  shared_1.log.warn(`[${event}]`, filePath);
@@ -54,13 +81,11 @@ function build(options) {
54
81
  }
55
82
  }
56
83
  }));
84
+ if (emitDeclarationDev) {
85
+ genDTS(files);
86
+ }
57
87
  }
58
88
  else {
59
- const files = globby_1.default.sync(['**/*.*', '!**/demos/**/*.*', '!**/__tests__/**/*.*'], {
60
- dot: false,
61
- cwd: sourceDir,
62
- absolute: true,
63
- });
64
89
  if (!files || files.length === 0) {
65
90
  shared_1.log.error(LOG_PREFIX, 'Not exist any files'.red, cwd);
66
91
  process.exit(0);
@@ -76,17 +101,7 @@ function build(options) {
76
101
  console.error(error);
77
102
  });
78
103
  }
79
- const dtsStartTime = Date.now();
80
- shared_1.log.info(LOG_PREFIX, 'd.ts generating...'.yellow);
81
- const typeFiles = yield (0, transform_1.generateDTS)(files.filter((file) => /\.tsx?$/.test(file)));
82
- for (let index = 0; index < Object.entries(typeFiles).length; index++) {
83
- const [dtsFile, content] = Object.entries(typeFiles)[index];
84
- const fileBase = path_1.default.relative(sourceDir, dtsFile);
85
- const dtsFilePath = path_1.default.join(outputDir, fileBase);
86
- (0, shared_1.writeFileSync)(dtsFilePath, content);
87
- shared_1.log.verbose(LOG_PREFIX, fileBase.gray);
88
- }
89
- shared_1.log.info(LOG_PREFIX, 'd.ts done.'.green, Date.now() - dtsStartTime, 'ms');
104
+ genDTS(files);
90
105
  }
91
106
  });
92
107
  }
@@ -25,8 +25,6 @@ function babelTransform(file, options) {
25
25
  let code = source;
26
26
  if (options.target) {
27
27
  const { target } = options;
28
- process.env.PLATFORM = target;
29
- process.env.REMAX_PLATFORM = target;
30
28
  babelPlugin = [
31
29
  [
32
30
  require.resolve('../babel/import-replacement'),
@@ -59,6 +59,7 @@ function unlinkPlatformFiles(options) {
59
59
  const libFile = path_1.default.join(outputDir, fileBase);
60
60
  if (['.ts', '.tsx', '.js', '.jsx'].includes(fileExt) && fileExt !== '.d.ts') {
61
61
  likePaths.push(replaceExt(libFile, '.js'));
62
+ likePaths.push(replaceExt(libFile, '.d.ts'));
62
63
  transformTarget.forEach((target) => {
63
64
  likePaths.push(replaceExt(libFile, `.${target}.js`));
64
65
  });
@@ -69,7 +70,7 @@ function unlinkPlatformFiles(options) {
69
70
  likePaths.filter(fs_extra_1.default.existsSync).map(fs_extra_1.default.unlinkSync);
70
71
  }
71
72
  exports.unlinkPlatformFiles = unlinkPlatformFiles;
72
- const PLATFORM_EXTENSION = [...Object.keys(types_1.PlatformTarget), 'mini', 'native'];
73
+ const PLATFORM_EXTENSION = [...Object.keys(types_1.PlatformTarget), 'mini'];
73
74
  // 平台文件后缀
74
75
  // .mini.js 是 ray 定义的小程序文件后缀
75
76
  const REGEXP_PLATFORM_EXTENSION = new RegExp(`\\.(?<target>(${PLATFORM_EXTENSION.join('|')}))\\.(ts|js)x?$`);
@@ -1,3 +1 @@
1
- export declare function generateDTS(files: string[]): Promise<{
2
- [path: string]: string;
3
- }>;
1
+ export declare function generateDTS(cb: (f: string, c: string) => void): (files: string[]) => void;
@@ -22,40 +22,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
25
  Object.defineProperty(exports, "__esModule", { value: true });
35
26
  exports.generateDTS = void 0;
36
27
  const ts = __importStar(require("typescript"));
37
- function generateDTS(files) {
38
- return __awaiter(this, void 0, void 0, function* () {
39
- const createdFiles = {};
40
- const options = {
41
- allowJs: false,
42
- declaration: true,
43
- emitDeclarationOnly: true,
44
- esModuleInterop: true,
45
- target: ts.ScriptTarget.ES5,
46
- noUnusedParameters: true,
47
- noUnusedLocals: true,
48
- strictNullChecks: true,
49
- jsx: ts.JsxEmit.Preserve,
50
- allowSyntheticDefaultImports: true,
51
- };
52
- const host = ts.createCompilerHost(options);
53
- host.writeFile = (fileName, contents) => {
54
- createdFiles[fileName] = contents;
55
- };
28
+ const options = {
29
+ allowJs: false,
30
+ declaration: true,
31
+ emitDeclarationOnly: true,
32
+ esModuleInterop: true,
33
+ target: ts.ScriptTarget.ES5,
34
+ noUnusedParameters: true,
35
+ noUnusedLocals: true,
36
+ strictNullChecks: true,
37
+ jsx: ts.JsxEmit.Preserve,
38
+ allowSyntheticDefaultImports: true,
39
+ };
40
+ function generateDTS(cb) {
41
+ const host = ts.createCompilerHost(options);
42
+ host.writeFile = (fileName, contents) => {
43
+ cb(fileName, contents);
44
+ };
45
+ return (files) => {
56
46
  const program = ts.createProgram(files, options, host);
57
47
  program.emit();
58
- return createdFiles;
59
- });
48
+ };
60
49
  }
61
50
  exports.generateDTS = generateDTS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/builder-component",
3
- "version": "0.5.4",
3
+ "version": "0.5.6-beta-1",
4
4
  "description": "Ray builder for component",
5
5
  "keywords": [
6
6
  "ray"
@@ -24,10 +24,10 @@
24
24
  "@babel/helper-plugin-utils": "^7.14.5",
25
25
  "@babel/traverse": "^7.16.3",
26
26
  "@babel/types": "^7.16.0",
27
- "@ray-js/babel-preset-standard": "^0.5.4",
28
- "@ray-js/env-loader": "^0.5.4",
29
- "@ray-js/shared": "^0.5.4",
30
- "@ray-js/types": "^0.5.4",
27
+ "@ray-js/babel-preset-standard": "^0.5.6-beta-1",
28
+ "@ray-js/env-loader": "^0.5.6-beta-1",
29
+ "@ray-js/shared": "^0.5.6-beta-1",
30
+ "@ray-js/types": "^0.5.6-beta-1",
31
31
  "babel-plugin-import": "^1.13.3",
32
32
  "chokidar": "^3.5.2",
33
33
  "colors": "1.4.0",
@@ -44,6 +44,6 @@
44
44
  "email": "tuyafe@tuya.com"
45
45
  }
46
46
  ],
47
- "gitHead": "5d19e7617b6ded78fb6426ada87307e2b1d4bae5",
47
+ "gitHead": "46f291d3c38bb9fa1af739d01f9513c39e3b6be9",
48
48
  "repository": {}
49
49
  }