@tmsfe/tmskit 0.0.5-beta.1 → 0.0.5-beta.5
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/README.md +16 -2
- package/dist/index.cjs.js +945 -296
- package/package.json +11 -4
- package/src/config/constant.js +2 -0
- package/src/config/defaultTmsConfig.js +8 -10
- package/src/gulp/build.js +3 -1
- package/src/gulp/compile.js +32 -12
- package/src/gulp/dev.js +42 -17
- package/src/gulp/plugins/less.js +116 -0
- package/src/gulp/plugins/mpCommonDep.js +131 -0
- package/src/gulp/plugins/mpJsonDep.js +108 -0
- package/src/gulp/plugins/mpWxmlDep.js +194 -0
- package/src/gulp/plugins/postcss-font-base64.js +72 -0
- package/src/gulp/plugins/utils/pluginError.js +25 -0
- package/src/index.js +0 -1
- package/src/scripts/run/build/index.js +1 -1
- package/src/scripts/run/dev/index.js +1 -1
- package/src/scripts/run/init/index.js +5 -5
- package/src/scripts/run/install/index.js +1 -1
- package/src/utils/buildAppJson.js +59 -3
- package/src/utils/cloneModules.js +1 -0
- package/src/utils/findCssImport.js +30 -0
- package/src/utils/io.js +43 -3
- package/src/utils/widgets.js +6 -3
- package/CHANGELOG.md +0 -0
- package/rollup.config.js +0 -179
- package/src/gulp/includeDep.js +0 -130
package/rollup.config.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import ts from 'rollup-plugin-typescript2';
|
|
3
|
-
import babel from '@rollup/plugin-babel';
|
|
4
|
-
import json from '@rollup/plugin-json';
|
|
5
|
-
import replace from 'rollup-plugin-replace';
|
|
6
|
-
import nodeResolve from 'rollup-plugin-node-resolve';
|
|
7
|
-
import commonjs from '@rollup/plugin-commonjs';
|
|
8
|
-
|
|
9
|
-
if (!process.env.TARGET) {
|
|
10
|
-
throw new Error('TARGET package must be specified via --environment flag.');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// 指定包地址
|
|
14
|
-
const packageDir = path.resolve(__dirname);
|
|
15
|
-
// 包名
|
|
16
|
-
const name = path.basename(packageDir);
|
|
17
|
-
// 环境
|
|
18
|
-
const interEnv = process.env.INTER_ENV || 'public';
|
|
19
|
-
|
|
20
|
-
// eslint-disable-next-line
|
|
21
|
-
const packageJson = require('./package.json');
|
|
22
|
-
|
|
23
|
-
const packageOptions = packageJson.buildOptions || {};
|
|
24
|
-
|
|
25
|
-
function resolve(name) { // eslint-disable-line
|
|
26
|
-
return path.resolve(packageDir, name);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const outputConfig = {
|
|
30
|
-
esm: {
|
|
31
|
-
dir: resolve('dist'),
|
|
32
|
-
entryFileNames: '[name].js',
|
|
33
|
-
format: 'es',
|
|
34
|
-
},
|
|
35
|
-
'esm-browser': {
|
|
36
|
-
dir: resolve('dist'),
|
|
37
|
-
entryFileNames: '[name].esm-browser.js',
|
|
38
|
-
format: 'es',
|
|
39
|
-
},
|
|
40
|
-
cjs: {
|
|
41
|
-
dir: resolve('dist'),
|
|
42
|
-
entryFileNames: '[name].cjs.js',
|
|
43
|
-
format: 'cjs',
|
|
44
|
-
},
|
|
45
|
-
global: {
|
|
46
|
-
dir: resolve('dist'),
|
|
47
|
-
entryFileNames: '[name].global.js',
|
|
48
|
-
format: 'iife',
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
const defaultFormats = ['esm'];
|
|
53
|
-
// 打包格式
|
|
54
|
-
const packageFormats = packageOptions.formats || defaultFormats;
|
|
55
|
-
|
|
56
|
-
const packageConfigs = packageFormats.map(format => createConfig(format, outputConfig[format]));
|
|
57
|
-
|
|
58
|
-
export default packageConfigs;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* format rollup package configuration object
|
|
62
|
-
* @param {string} format 文件打包格式
|
|
63
|
-
* @param {object} output 输出对象
|
|
64
|
-
* @param {array} plugins 插件
|
|
65
|
-
* @returns {object} rollup配置对象
|
|
66
|
-
*/
|
|
67
|
-
function createConfig(format, output, plugins = []) {
|
|
68
|
-
if (!output) {
|
|
69
|
-
// eslint-disable-next-line
|
|
70
|
-
console.log(require('chalk').yellow(`invalid format: "${format}"`)); // eslint-disable-line no-console
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
output.sourceMap = true; // eslint-disable-line
|
|
75
|
-
output.externalLiveBindings = false; // eslint-disable-line
|
|
76
|
-
|
|
77
|
-
// 兼容不同的包的入口文件 -- 后面会统一为index.ts
|
|
78
|
-
const entryFile = setEntryFile(name);
|
|
79
|
-
|
|
80
|
-
// 定制化cjs的插件和esmodule的插件。
|
|
81
|
-
const extralPlugin = setEsPlugin(output.format);
|
|
82
|
-
|
|
83
|
-
return {
|
|
84
|
-
input: entryFile,
|
|
85
|
-
output,
|
|
86
|
-
external: [],
|
|
87
|
-
plugins: [
|
|
88
|
-
json({
|
|
89
|
-
namedExports: false,
|
|
90
|
-
}),
|
|
91
|
-
commonjs({
|
|
92
|
-
ignoreDynamicRequires: true,
|
|
93
|
-
// include: 'node_modules/**', // Default: undefined
|
|
94
|
-
browser: true,
|
|
95
|
-
}),
|
|
96
|
-
babel({
|
|
97
|
-
plugins: ['@babel/plugin-proposal-nullish-coalescing-operator', '@babel/plugin-proposal-optional-chaining'],
|
|
98
|
-
// exclude: ['node_modules/**'],
|
|
99
|
-
}),
|
|
100
|
-
// terser(),
|
|
101
|
-
createReplacePlugin(),
|
|
102
|
-
...extralPlugin,
|
|
103
|
-
...plugins,
|
|
104
|
-
],
|
|
105
|
-
onwarn: (msg, warn) => {
|
|
106
|
-
if (!/Circular/.test(msg)) {
|
|
107
|
-
warn(msg);
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
treeshake: {
|
|
111
|
-
moduleSideEffects: false,
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* 兼容现在的包会存在不同入口的情况。 后面会统一为index.ts
|
|
118
|
-
* @param { string } packageName 包名称
|
|
119
|
-
* @returns { Object } entryFile
|
|
120
|
-
*/
|
|
121
|
-
function setEntryFile(packageName) {
|
|
122
|
-
let entryFile = resolve('src/index.js');
|
|
123
|
-
|
|
124
|
-
switch (packageName) {
|
|
125
|
-
case 'tms-core':
|
|
126
|
-
entryFile = {
|
|
127
|
-
index: resolve('src/index'),
|
|
128
|
-
request: resolve('src/request'),
|
|
129
|
-
cloudService: resolve('src/cloudService'),
|
|
130
|
-
};
|
|
131
|
-
if (interEnv !== 'public') {
|
|
132
|
-
entryFile['index-proxy'] = resolve('src/index-proxy');
|
|
133
|
-
}
|
|
134
|
-
break;
|
|
135
|
-
case 'tms-websdk':
|
|
136
|
-
entryFile = resolve('src/index.ts');
|
|
137
|
-
break;
|
|
138
|
-
default:
|
|
139
|
-
entryFile = resolve('src/index.js');
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
return entryFile;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* 定制化cjs和esmodule的插件
|
|
147
|
-
* @param { string } format 打包格式
|
|
148
|
-
* @returns { Array<plugin> } 插件数组
|
|
149
|
-
*/
|
|
150
|
-
function setEsPlugin(format) {
|
|
151
|
-
const extralPlugins = [];
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (format.indexOf('es') > -1) {
|
|
155
|
-
extralPlugins.push(ts({
|
|
156
|
-
tsconfig: resolve('tsconfig.json'),
|
|
157
|
-
}));
|
|
158
|
-
};
|
|
159
|
-
if (format.indexOf('iife') > -1) {
|
|
160
|
-
extralPlugins.push(nodeResolve({ jsnext: true, preferBuiltins: true, browser: true }));
|
|
161
|
-
}
|
|
162
|
-
return extralPlugins;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* 创建变量替换插件
|
|
167
|
-
* @returns {function} 插件函数
|
|
168
|
-
*/
|
|
169
|
-
function createReplacePlugin() {
|
|
170
|
-
const replacements = {
|
|
171
|
-
tmsCore: interEnv === 'public' ? '@tmsfe/tms-core' : '@tmsfe/tms-core',
|
|
172
|
-
INTER_ENV_VB: JSON.stringify(interEnv || 'private'),
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
return replace({
|
|
176
|
-
values: replacements,
|
|
177
|
-
preventAssignment: true,
|
|
178
|
-
});
|
|
179
|
-
}
|
package/src/gulp/includeDep.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
const through = require('through2');
|
|
2
|
-
const precinct = require('precinct');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const { copyFile, ext, fileInDir } = require('../utils/io');
|
|
5
|
-
const { resolve } = require('../utils/widgets');
|
|
6
|
-
const fs = require('fs');
|
|
7
|
-
const { fail } = require('../utils/log');
|
|
8
|
-
|
|
9
|
-
const dfsDep = function (includePath, anaFileOriginFile, anaFileDestFile, extensions) {
|
|
10
|
-
const contents = fs.readFileSync(anaFileOriginFile, 'utf8');
|
|
11
|
-
const deps = precinct(contents);
|
|
12
|
-
deps.forEach((depItem) => {
|
|
13
|
-
if (depItem.startsWith('.')) {
|
|
14
|
-
// 被依赖文件的存在的绝对路径
|
|
15
|
-
const depOriginPath = path.join(path.dirname(anaFileOriginFile), depItem);
|
|
16
|
-
// 被依赖文件加上后缀
|
|
17
|
-
const depOriginPathExt = ext(depOriginPath, extensions);
|
|
18
|
-
|
|
19
|
-
if (!depOriginPathExt) {
|
|
20
|
-
fail(`${anaFileOriginFile}的${depItem}引用路径存找不到文件,请检查引用路径`);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// 被依赖文件是否存在 include的path中 (只处理include的文件)
|
|
24
|
-
if (depOriginPathExt && fileInDir(includePath, depOriginPathExt.file)) {
|
|
25
|
-
const depOriginFile = depOriginPathExt.file;
|
|
26
|
-
const depDestPath = resolve(path.dirname(anaFileDestFile), depItem);
|
|
27
|
-
const depDestFile = depDestPath.endsWith(depOriginPathExt.ext)
|
|
28
|
-
? depDestPath
|
|
29
|
-
: depDestPath + depOriginPathExt.ext;
|
|
30
|
-
|
|
31
|
-
if (fs.existsSync(depDestFile)) {
|
|
32
|
-
const depDestContent = fs.readFileSync(depDestFile, 'utf8');
|
|
33
|
-
const depOriginContent = fs.readFileSync(depOriginFile, 'utf8');
|
|
34
|
-
if (depDestContent !== depOriginContent) {
|
|
35
|
-
console.log(`拷贝${depOriginFile}内容到${depDestFile}`);
|
|
36
|
-
copyFile(depOriginFile, depDestFile);
|
|
37
|
-
}
|
|
38
|
-
} else {
|
|
39
|
-
console.log(`拷贝${depOriginFile}内容到${depDestFile}`);
|
|
40
|
-
copyFile(depOriginFile, depDestFile);
|
|
41
|
-
}
|
|
42
|
-
dfsDep(includePath, depOriginFile, depDestFile, extensions);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
function includeThirdParty(tmsConfig, module, extensions = ['.js', '.ts', '.wxs']) {
|
|
49
|
-
const stream = through.obj(function (file, enc, cb) {
|
|
50
|
-
// 依赖分析的文件
|
|
51
|
-
const anaFileOriginFile = file.history[0];
|
|
52
|
-
const anaFileRelativeModule = path.relative(resolve(module.from), anaFileOriginFile);
|
|
53
|
-
const anaFileDestFile = resolve(tmsConfig.gulp.outputDir, module.to, anaFileRelativeModule);
|
|
54
|
-
|
|
55
|
-
if (file.isBuffer()) {
|
|
56
|
-
let contents = String(file.contents);
|
|
57
|
-
const deps = precinct(contents);
|
|
58
|
-
const copyModules = [];
|
|
59
|
-
|
|
60
|
-
Object.keys(tmsConfig.gulp.dependencies).forEach((includeName) => {
|
|
61
|
-
const includePath = tmsConfig.gulp.dependencies[includeName];
|
|
62
|
-
deps.forEach((depItem) => {
|
|
63
|
-
if (depItem.indexOf(includeName) > -1) {
|
|
64
|
-
// 被依赖文件的存在的绝对路径 (eg: /User/thirdparty/loadsh)
|
|
65
|
-
const depOriginPath = path.join(path.dirname(anaFileOriginFile), depItem);
|
|
66
|
-
// 被依赖文件加上后缀
|
|
67
|
-
const depOriginPathExt = ext(depOriginPath, extensions);
|
|
68
|
-
|
|
69
|
-
if (!depOriginPathExt) {
|
|
70
|
-
fail(`${anaFileOriginFile}的${depItem}引用路径存找不到文件,请检查引用路径`);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// 被依赖文件是否存在 include的path中 (只处理include的文件)
|
|
74
|
-
if (depOriginPathExt && fileInDir(includePath, depOriginPathExt.file)) {
|
|
75
|
-
// eslint-disable-next-line
|
|
76
|
-
const reg = new RegExp(`^(\.\.\/)+.*\/${includeName}\/(.*)`);
|
|
77
|
-
const regRes = depItem.match(reg) || [];
|
|
78
|
-
if (regRes[2]) {
|
|
79
|
-
const depDestPath = resolve(tmsConfig.gulp.outputDir, module.to, includeName, regRes[2]);
|
|
80
|
-
const depDestFile = depDestPath.endsWith(depOriginPathExt.ext)
|
|
81
|
-
? depDestPath
|
|
82
|
-
: depDestPath + depOriginPathExt.ext;
|
|
83
|
-
// {
|
|
84
|
-
// depOriginFile: '/Users/odile/workspace/tms-frontend1/miniprogram/thirdparty/libs/timer.js',
|
|
85
|
-
// depDestFile: `/Users/odile/workspace/tms-frontend1/tools/demo1/dist/modules/
|
|
86
|
-
// aggredriving/thirdparty/libs/timer.js`,
|
|
87
|
-
// beforeDepPath: '../../../../thirdparty/libs/timer',
|
|
88
|
-
// afterDepPath: '../../thirdparty/libs/timer'
|
|
89
|
-
// }
|
|
90
|
-
copyModules.push({
|
|
91
|
-
depOriginFile: depOriginPathExt.file,
|
|
92
|
-
depDestFile,
|
|
93
|
-
beforeDepPath: depItem,
|
|
94
|
-
afterDepPath: path.relative(path.dirname(anaFileDestFile), depDestPath),
|
|
95
|
-
includePath,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
copyModules.forEach(({ includePath, depOriginFile, depDestFile, beforeDepPath, afterDepPath }) => {
|
|
104
|
-
if (fs.existsSync(depDestFile)) {
|
|
105
|
-
const depDestContent = fs.readFileSync(depDestFile, 'utf8');
|
|
106
|
-
const depOriginContent = fs.readFileSync(depOriginFile, 'utf8');
|
|
107
|
-
if (depDestContent !== depOriginContent) {
|
|
108
|
-
console.log(`拷贝${depOriginFile}内容到${depDestFile}`);
|
|
109
|
-
copyFile(depOriginFile, depDestFile);
|
|
110
|
-
}
|
|
111
|
-
} else {
|
|
112
|
-
console.log(`拷贝${depOriginFile}内容到${depDestFile}`);
|
|
113
|
-
copyFile(depOriginFile, depDestFile);
|
|
114
|
-
}
|
|
115
|
-
contents = contents.replace(beforeDepPath, afterDepPath);
|
|
116
|
-
dfsDep(includePath, depOriginFile, depDestFile, extensions);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
// eslint-disable-next-line
|
|
120
|
-
file.contents = new Buffer(contents);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
this.push(file);
|
|
124
|
-
cb();
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
return stream;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
module.exports = includeThirdParty;
|