@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/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
- }
@@ -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;