@tmsfe/tmskit 0.0.5-beta.3 → 0.0.5-beta.4

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.
@@ -1,122 +0,0 @@
1
- const through = require('through2');
2
- const path = require('path');
3
- const { copyFile, ext, fileInDir } = require('../utils/io');
4
- const { resolve } = require('../utils/widgets');
5
- const fs = require('fs');
6
- const { fail } = require('../utils/log');
7
- const { dfsFindJsDep } = require('./jsDep');
8
-
9
- function handleCopyFile(depDestFile, depOriginFile) {
10
- if (fs.existsSync(depDestFile)) {
11
- const depDestContent = fs.readFileSync(depDestFile, 'utf8');
12
- const depOriginContent = fs.readFileSync(depOriginFile, 'utf8');
13
- if (depDestContent !== depOriginContent) {
14
- console.log(`json拷贝${depOriginFile}内容到${depDestFile}`);
15
- copyFile(depOriginFile, depDestFile);
16
- }
17
- } else {
18
- console.log(`json拷贝${depOriginFile}内容到${depDestFile}`);
19
- copyFile(depOriginFile, depDestFile);
20
- }
21
- }
22
-
23
- function mpJsonDep(
24
- tmsConfig,
25
- module,
26
- extensions = ['.wxml'],
27
- filesExt = ['.wxml', '.json', '.js', '.ts', '.wxss', '.less'],
28
- ) {
29
- const stream = through.obj(function (file, enc, cb) {
30
- // 当前分析的文件的路径
31
- const anaFileOriginFile = file.history[0];
32
- const anaFileRelativeModule = path.relative(resolve(module.from), anaFileOriginFile);
33
- const anaFileDestFile = resolve(tmsConfig.gulp.outputDir, module.to, anaFileRelativeModule);
34
-
35
- if (file.isBuffer()) {
36
- const copyModules = new Map();
37
- let contents = String(file.contents);
38
- try {
39
- contents = JSON.parse(contents);
40
- if (contents.usingComponents) {
41
- Object.keys(tmsConfig.gulp.dependencies).forEach((includeName) => {
42
- const includePath = tmsConfig.gulp.dependencies[includeName];
43
- Object.keys(contents.usingComponents).forEach((componentKey) => {
44
- const componentPath = contents.usingComponents[componentKey];
45
- if (componentPath.indexOf(includeName) > -1) {
46
- const depOriginPath = path.join(path.dirname(anaFileOriginFile), componentPath);
47
- // 被依赖文件加上后缀
48
- const depOriginPathExt = ext(depOriginPath, extensions);
49
-
50
- if (!depOriginPathExt) {
51
- fail(`${anaFileOriginFile}的${componentPath}引用路径存找不到文件,请检查引用路径`);
52
- }
53
-
54
- const isFileInDir = fileInDir(includePath, depOriginPathExt.file);
55
-
56
- if (!isFileInDir) {
57
- fail(`${depOriginPathExt.file}不在${includePath}不在文件夹内, 请检查应用路径`);
58
- }
59
-
60
- if (depOriginPathExt && isFileInDir) {
61
- // eslint-disable-next-line
62
- const reg = new RegExp(`^(\.\.\/)+.*\/${includeName}\/(.*)`);
63
- const regRes = componentPath.match(reg) || [];
64
- if (regRes[2]) {
65
- const depDestPath = resolve(tmsConfig.gulp.outputDir, module.to, includeName, regRes[2]);
66
- const depDestFile = depDestPath.endsWith(depOriginPathExt.ext)
67
- ? depDestPath
68
- : depDestPath + depOriginPathExt.ext;
69
-
70
- if (!copyModules.has(depDestFile)) {
71
- copyModules.set(depDestFile, {
72
- depOriginFile: depOriginPathExt.file,
73
- depOriginExt: depOriginPathExt.ext,
74
- depDestFile,
75
- beforeDepPath: componentPath,
76
- afterDepPath: path.relative(path.dirname(anaFileDestFile), depDestPath),
77
- });
78
- }
79
- }
80
- }
81
- }
82
- });
83
- });
84
- }
85
- } catch (e) {
86
- fail(`解析jsonDep出现错误:${e}`);
87
- }
88
- copyModules.forEach(({ depOriginFile, depOriginExt, depDestFile, beforeDepPath, afterDepPath }) => {
89
- filesExt.forEach((extKey) => {
90
- const originFile = depOriginFile.replace(depOriginExt, extKey);
91
- const destFile = depDestFile.replace(depOriginExt, extKey);
92
-
93
- if (fs.existsSync(originFile)) {
94
- handleCopyFile(destFile, originFile);
95
-
96
- const jsExtensions = ['.js', '.ts'];
97
- if (jsExtensions.indexOf(extKey) > -1) {
98
- const defs = dfsFindJsDep(originFile, destFile, jsExtensions);
99
- defs.forEach((item) => {
100
- handleCopyFile(item.depDestFile, item.depOriginFile);
101
- });
102
- }
103
- }
104
- });
105
- contents = typeof contents === 'object' ? JSON.stringify(contents, null, 2) : contents;
106
- contents = contents.replace(beforeDepPath, afterDepPath);
107
- });
108
- contents = typeof contents === 'object' ? JSON.stringify(contents, null, 2) : contents;
109
- // eslint-disable-next-line
110
- file.contents = new Buffer(contents);
111
- }
112
-
113
- this.push(file);
114
- cb();
115
- });
116
-
117
- return stream;
118
- }
119
-
120
- module.exports = {
121
- mpJsonDep,
122
- };