@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 +1 -0
- package/lib/build.js +32 -17
- package/lib/transform/babelTransform.js +0 -2
- package/lib/transform/index.js +2 -1
- package/lib/transform/type.d.ts +1 -3
- package/lib/transform/type.js +19 -30
- package/package.json +6 -6
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
|
-
|
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'),
|
package/lib/transform/index.js
CHANGED
@@ -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'
|
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?$`);
|
package/lib/transform/type.d.ts
CHANGED
package/lib/transform/type.js
CHANGED
@@ -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
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
|
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.
|
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.
|
28
|
-
"@ray-js/env-loader": "^0.5.
|
29
|
-
"@ray-js/shared": "^0.5.
|
30
|
-
"@ray-js/types": "^0.5.
|
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": "
|
47
|
+
"gitHead": "46f291d3c38bb9fa1af739d01f9513c39e3b6be9",
|
48
48
|
"repository": {}
|
49
49
|
}
|