@nocobase/build 0.11.1-alpha.5 → 0.12.0-alpha.2
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/babel.js +22 -4
- package/lib/build.js +62 -23
- package/lib/build.test.js +67 -0
- package/lib/buildPlugin.js +252 -0
- package/lib/normalizeBundleOpts.test.js +78 -0
- package/lib/schema.test.js +65 -0
- package/lib/utils/buildPluginUtils.js +119 -0
- package/lib/utils/buildPluginUtils.test.js +219 -0
- package/lib/utils/getDepsConfig.js +95 -0
- package/lib/utils/getLernaPackages/index.js +32 -2
- package/lib/utils/getLernaPackages/index.test.js +64 -0
- package/package.json +7 -2
- package/src/babel.ts +0 -257
- package/src/build.ts +0 -271
- package/src/es5ImcompatibleVersions.ts +0 -33
- package/src/getBabelConfig.ts +0 -95
- package/src/getRollupConfig.ts +0 -343
- package/src/getUserConfig.ts +0 -87
- package/src/importLibToEs.js +0 -26
- package/src/index.ts +0 -3
- package/src/normalizeBundleOpts.ts +0 -24
- package/src/randomColor.ts +0 -34
- package/src/registerBabel.ts +0 -23
- package/src/rollup.ts +0 -77
- package/src/schema.ts +0 -175
- package/src/types.d.ts +0 -118
- package/src/utils/getLernaPackages/fixtures/customize/core/core1/package.json +0 -7
- package/src/utils/getLernaPackages/fixtures/customize/core/core1/src/index.js +0 -2
- package/src/utils/getLernaPackages/fixtures/customize/core/core2/package.json +0 -5
- package/src/utils/getLernaPackages/fixtures/customize/core/core2/src/index.js +0 -2
- package/src/utils/getLernaPackages/fixtures/customize/lerna.json +0 -6
- package/src/utils/getLernaPackages/fixtures/customize/package.json +0 -4
- package/src/utils/getLernaPackages/fixtures/customize/packages/bar/package.json +0 -4
- package/src/utils/getLernaPackages/fixtures/customize/packages/bar/src/index.js +0 -2
- package/src/utils/getLernaPackages/fixtures/customize/packages/foo/package.json +0 -7
- package/src/utils/getLernaPackages/fixtures/customize/packages/foo/src/index.js +0 -2
- package/src/utils/getLernaPackages/fixtures/default/lerna.json +0 -1
- package/src/utils/getLernaPackages/fixtures/default/package.json +0 -4
- package/src/utils/getLernaPackages/fixtures/default/packages/bar/package.json +0 -4
- package/src/utils/getLernaPackages/fixtures/default/packages/bar/src/index.js +0 -2
- package/src/utils/getLernaPackages/fixtures/default/packages/foo/package.json +0 -7
- package/src/utils/getLernaPackages/fixtures/default/packages/foo/src/index.js +0 -2
- package/src/utils/getLernaPackages/index.ts +0 -57
- package/src/utils/index.ts +0 -17
package/lib/babel.js
CHANGED
|
@@ -19,6 +19,7 @@ var _gulpLess = _interopRequireDefault(require("gulp-less"));
|
|
|
19
19
|
var _gulpPlumber = _interopRequireDefault(require("gulp-plumber"));
|
|
20
20
|
var _gulpIf = _interopRequireDefault(require("gulp-if"));
|
|
21
21
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
22
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
22
23
|
var _getBabelConfig2 = _interopRequireDefault(require("./getBabelConfig"));
|
|
23
24
|
var ts = _interopRequireWildcard(require("typescript"));
|
|
24
25
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -43,6 +44,8 @@ function _ref() {
|
|
|
43
44
|
dispose = opts.dispose,
|
|
44
45
|
importLibToEs = opts.importLibToEs,
|
|
45
46
|
log = opts.log,
|
|
47
|
+
_opts$isPlugin = opts.isPlugin,
|
|
48
|
+
isPlugin = _opts$isPlugin === void 0 ? false : _opts$isPlugin,
|
|
46
49
|
_opts$bundleOpts = opts.bundleOpts,
|
|
47
50
|
_opts$bundleOpts$targ = _opts$bundleOpts.target,
|
|
48
51
|
target = _opts$bundleOpts$targ === void 0 ? "browser" : _opts$bundleOpts$targ,
|
|
@@ -60,10 +63,24 @@ function _ref() {
|
|
|
60
63
|
cjs = _opts$bundleOpts.cjs,
|
|
61
64
|
lessInBabelMode = _opts$bundleOpts.lessInBabelMode;
|
|
62
65
|
const srcPath = (0, _path.join)(cwd, "src");
|
|
63
|
-
const targetDir = type === "esm" ? "es" : "lib";
|
|
66
|
+
const targetDir = type === "esm" ? "es" : isPlugin ? 'dist' : "lib";
|
|
64
67
|
const targetPath = (0, _path.join)(cwd, targetDir);
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
if (!isPlugin) {
|
|
69
|
+
log(_chalk.default.gray(`Clean ${targetDir} directory`));
|
|
70
|
+
_rimraf.default.sync(targetPath);
|
|
71
|
+
} else {
|
|
72
|
+
if (_fsExtra.default.existsSync(targetPath)) {
|
|
73
|
+
// exclude node_modules
|
|
74
|
+
const files = _fsExtra.default.readdirSync(targetPath, {
|
|
75
|
+
recursive: false
|
|
76
|
+
});
|
|
77
|
+
files.forEach(file => {
|
|
78
|
+
if (file !== 'node_modules') {
|
|
79
|
+
_rimraf.default.sync((0, _path.join)(targetPath, file));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
67
84
|
function transform(opts) {
|
|
68
85
|
const file = opts.file,
|
|
69
86
|
type = opts.type;
|
|
@@ -140,6 +157,7 @@ function _ref() {
|
|
|
140
157
|
return /\.tsx?$/.test(path) && !path.endsWith(".d.ts");
|
|
141
158
|
}
|
|
142
159
|
function isTransform(path) {
|
|
160
|
+
if (isPlugin) return false;
|
|
143
161
|
return babelTransformRegexp.test(path) && !path.endsWith(".d.ts");
|
|
144
162
|
}
|
|
145
163
|
return _vinylFs.default.src(src, {
|
|
@@ -162,7 +180,7 @@ function _ref() {
|
|
|
162
180
|
}))).pipe(_vinylFs.default.dest(targetPath));
|
|
163
181
|
}
|
|
164
182
|
return new Promise(resolve => {
|
|
165
|
-
const patterns = [(0, _path.join)(srcPath, "**/*"), `!${(0, _path.join)(srcPath, "**/fixtures{,/**}")}`, `!${(0, _path.join)(srcPath, "**/demos{,/**}")}`, `!${(0, _path.join)(srcPath, "**/__test__{,/**}")}`, `!${(0, _path.join)(srcPath, "**/__tests__{,/**}")}`, `!${(0, _path.join)(srcPath, "**/*.mdx")}`, `!${(0, _path.join)(srcPath, "**/*.md")}`, `!${(0, _path.join)(srcPath, "**/*.+(test|e2e|spec).+(js|jsx|ts|tsx)")}`, `!${(0, _path.join)(srcPath, "**/tsconfig{,.*}.json")}`, `!${(0, _path.join)(srcPath, ".umi{,-production,-test}{,/**}")}`];
|
|
183
|
+
const patterns = [isPlugin ? (0, _path.join)(srcPath, "**/*.{ts,tsx}") : (0, _path.join)(srcPath, "**/*"), `!${(0, _path.join)(srcPath, "**/fixtures{,/**}")}`, `!${(0, _path.join)(srcPath, "**/demos{,/**}")}`, `!${(0, _path.join)(srcPath, "**/__test__{,/**}")}`, `!${(0, _path.join)(srcPath, "**/__tests__{,/**}")}`, `!${(0, _path.join)(srcPath, "**/*.mdx")}`, `!${(0, _path.join)(srcPath, "**/*.md")}`, `!${(0, _path.join)(srcPath, "**/*.+(test|e2e|spec).+(js|jsx|ts|tsx)")}`, `!${(0, _path.join)(srcPath, "**/tsconfig{,.*}.json")}`, `!${(0, _path.join)(srcPath, ".umi{,-production,-test}{,/**}")}`];
|
|
166
184
|
createStream(patterns).on("end", () => {
|
|
167
185
|
if (watch) {
|
|
168
186
|
log(_chalk.default.magenta(`Start watching ${(0, _slash.default)(srcPath).replace(`${cwd}/`, "")} directory...`));
|
package/lib/build.js
CHANGED
|
@@ -15,6 +15,7 @@ var _path = require("path");
|
|
|
15
15
|
var _rimraf = _interopRequireDefault(require("rimraf"));
|
|
16
16
|
var _signale = _interopRequireDefault(require("signale"));
|
|
17
17
|
var _babel = _interopRequireDefault(require("./babel"));
|
|
18
|
+
var _buildPlugin = require("./buildPlugin");
|
|
18
19
|
var _getUserConfig = _interopRequireWildcard(require("./getUserConfig"));
|
|
19
20
|
var _randomColor = _interopRequireDefault(require("./randomColor"));
|
|
20
21
|
var _registerBabel = _interopRequireDefault(require("./registerBabel"));
|
|
@@ -28,11 +29,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
28
29
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
29
30
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
30
31
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
32
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
33
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
31
34
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
32
35
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
33
36
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
34
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
35
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
36
37
|
function getBundleOpts(opts) {
|
|
37
38
|
const cwd = opts.cwd,
|
|
38
39
|
_opts$buildArgs = opts.buildArgs,
|
|
@@ -100,6 +101,27 @@ None format of ${_chalk.default.cyan('cjs | esm | umd')} is configured, checkout
|
|
|
100
101
|
function isTypescriptFile(filePath) {
|
|
101
102
|
return filePath.endsWith('.ts') || filePath.endsWith('.tsx');
|
|
102
103
|
}
|
|
104
|
+
function isPluginPackage(name) {
|
|
105
|
+
const prefixes = (process.env.PLUGIN_PACKAGE_PREFIX || '').split(',');
|
|
106
|
+
var _iterator = _createForOfIteratorHelper(prefixes),
|
|
107
|
+
_step;
|
|
108
|
+
try {
|
|
109
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
110
|
+
const prefix = _step.value;
|
|
111
|
+
if (prefix.includes('preset')) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
if (name.startsWith(prefix)) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} catch (err) {
|
|
119
|
+
_iterator.e(err);
|
|
120
|
+
} finally {
|
|
121
|
+
_iterator.f();
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
103
125
|
function build(_x) {
|
|
104
126
|
return _build.apply(this, arguments);
|
|
105
127
|
}
|
|
@@ -122,28 +144,29 @@ function _build() {
|
|
|
122
144
|
only: customConfigPath ? _getUserConfig.CONFIG_FILES.concat(customConfigPath) : _getUserConfig.CONFIG_FILES
|
|
123
145
|
});
|
|
124
146
|
const pkgName = (typeof pkg === 'string' ? pkg : pkg === null || pkg === void 0 ? void 0 : pkg.name) || 'unknown';
|
|
125
|
-
function log(msg) {
|
|
126
|
-
console.log(`${pkg ? `${(0, _randomColor.default)(`${pkgName}`)}: ` : ''}${msg}
|
|
147
|
+
function log(msg, ...args) {
|
|
148
|
+
console.log(`${pkg ? `${(0, _randomColor.default)(`${pkgName}`)}: ` : ''}${msg}`, ...args);
|
|
127
149
|
}
|
|
128
150
|
|
|
129
151
|
// Get user config
|
|
130
152
|
const bundleOptsArray = getBundleOpts(opts);
|
|
131
|
-
|
|
132
|
-
|
|
153
|
+
const isPlugin = isPluginPackage(pkgName);
|
|
154
|
+
|
|
155
|
+
// Clean dist
|
|
156
|
+
if (clean && !isPlugin) {
|
|
157
|
+
log(_chalk.default.gray(`Clean dist directory`));
|
|
158
|
+
_rimraf.default.sync((0, _path.join)(cwd, 'dist'));
|
|
159
|
+
}
|
|
160
|
+
var _iterator2 = _createForOfIteratorHelper(bundleOptsArray),
|
|
161
|
+
_step2;
|
|
133
162
|
try {
|
|
134
|
-
for (
|
|
135
|
-
const bundleOpts =
|
|
163
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
164
|
+
const bundleOpts = _step2.value;
|
|
136
165
|
validateBundleOpts(bundleOpts, {
|
|
137
166
|
cwd,
|
|
138
167
|
rootPath
|
|
139
168
|
});
|
|
140
169
|
|
|
141
|
-
// Clean dist
|
|
142
|
-
if (clean) {
|
|
143
|
-
log(_chalk.default.gray(`Clean dist directory`));
|
|
144
|
-
_rimraf.default.sync((0, _path.join)(cwd, 'dist'));
|
|
145
|
-
}
|
|
146
|
-
|
|
147
170
|
// Build umd
|
|
148
171
|
if (bundleOpts.umd) {
|
|
149
172
|
log(`Build umd`);
|
|
@@ -162,17 +185,33 @@ function _build() {
|
|
|
162
185
|
// Build cjs
|
|
163
186
|
if (bundleOpts.cjs) {
|
|
164
187
|
const cjs = bundleOpts.cjs;
|
|
165
|
-
log(`Build cjs with ${cjs.type}`);
|
|
188
|
+
log(`Build ${isPlugin ? 'd.ts' : 'cjs'} with ${cjs.type}`);
|
|
166
189
|
if (cjs.type === 'babel') {
|
|
167
190
|
yield (0, _babel.default)({
|
|
168
191
|
cwd,
|
|
169
192
|
rootPath,
|
|
170
193
|
watch,
|
|
171
194
|
dispose,
|
|
195
|
+
isPlugin,
|
|
172
196
|
type: 'cjs',
|
|
173
197
|
log,
|
|
174
198
|
bundleOpts
|
|
175
199
|
});
|
|
200
|
+
if (isPlugin) {
|
|
201
|
+
log(cwd);
|
|
202
|
+
(0, _buildPlugin.deleteJsFiles)(cwd, log);
|
|
203
|
+
yield (0, _buildPlugin.buildPluginServer)(cwd, log);
|
|
204
|
+
yield (0, _buildPlugin.buildPluginClient)(cwd, log);
|
|
205
|
+
const buildFile = (0, _path.join)(cwd, 'build.js');
|
|
206
|
+
if ((0, _fs.existsSync)(buildFile)) {
|
|
207
|
+
log('build others');
|
|
208
|
+
try {
|
|
209
|
+
yield require(buildFile).run(log);
|
|
210
|
+
} catch (error) {
|
|
211
|
+
console.error(error);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
176
215
|
} else {
|
|
177
216
|
yield (0, _rollup.default)({
|
|
178
217
|
cwd,
|
|
@@ -219,9 +258,9 @@ function _build() {
|
|
|
219
258
|
}
|
|
220
259
|
}
|
|
221
260
|
} catch (err) {
|
|
222
|
-
|
|
261
|
+
_iterator2.e(err);
|
|
223
262
|
} finally {
|
|
224
|
-
|
|
263
|
+
_iterator2.f();
|
|
225
264
|
}
|
|
226
265
|
return dispose;
|
|
227
266
|
});
|
|
@@ -259,11 +298,11 @@ function _buildForLerna() {
|
|
|
259
298
|
pkgs = pkgs.filter(pkg => userConfig.pkgs.includes(getPkgRelativePath(cwd, pkg)));
|
|
260
299
|
}
|
|
261
300
|
const dispose = [];
|
|
262
|
-
var
|
|
263
|
-
|
|
301
|
+
var _iterator3 = _createForOfIteratorHelper(pkgs),
|
|
302
|
+
_step3;
|
|
264
303
|
try {
|
|
265
|
-
for (
|
|
266
|
-
const pkg =
|
|
304
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
305
|
+
const pkg = _step3.value;
|
|
267
306
|
const pkgName = getPkgRelativePath(cwd, pkg);
|
|
268
307
|
if (userConfig.excludePkgs && userConfig.excludePkgs.includes(pkgName)) {
|
|
269
308
|
continue;
|
|
@@ -283,9 +322,9 @@ function _buildForLerna() {
|
|
|
283
322
|
})));
|
|
284
323
|
}
|
|
285
324
|
} catch (err) {
|
|
286
|
-
|
|
325
|
+
_iterator3.e(err);
|
|
287
326
|
} finally {
|
|
288
|
-
|
|
327
|
+
_iterator3.f();
|
|
289
328
|
}
|
|
290
329
|
return dispose;
|
|
291
330
|
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _path = require("path");
|
|
4
|
+
var _project = require("@lerna/project");
|
|
5
|
+
var _fs = require("fs");
|
|
6
|
+
var _mkdirp = _interopRequireDefault(require("mkdirp"));
|
|
7
|
+
var _rimraf = _interopRequireDefault(require("rimraf"));
|
|
8
|
+
var _build = _interopRequireDefault(require("./build"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
11
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
13
|
+
function moveEsLibToDist(cwd) {
|
|
14
|
+
['es', 'lib'].forEach(dir => {
|
|
15
|
+
const absDirPath = (0, _path.join)(cwd, dir);
|
|
16
|
+
const absDistPath = (0, _path.join)(cwd, 'dist');
|
|
17
|
+
if ((0, _fs.existsSync)(absDirPath)) {
|
|
18
|
+
_mkdirp.default.sync(absDistPath);
|
|
19
|
+
(0, _fs.renameSync)(absDirPath, (0, _path.join)(absDistPath, dir));
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
describe('father build', () => {
|
|
24
|
+
const rootConfigMapping = {
|
|
25
|
+
'lerna-root-config-override': {
|
|
26
|
+
cjs: 'rollup',
|
|
27
|
+
esm: false
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
require('test-build-result')({
|
|
31
|
+
root: (0, _path.join)(__dirname, './fixtures/build'),
|
|
32
|
+
build({
|
|
33
|
+
cwd
|
|
34
|
+
}) {
|
|
35
|
+
process.chdir(cwd);
|
|
36
|
+
_rimraf.default.sync((0, _path.join)(cwd, 'dist'));
|
|
37
|
+
return (0, _build.default)({
|
|
38
|
+
cwd,
|
|
39
|
+
rootConfig: rootConfigMapping[(0, _path.basename)(cwd)]
|
|
40
|
+
}).then(() => {
|
|
41
|
+
// babel
|
|
42
|
+
moveEsLibToDist(cwd);
|
|
43
|
+
|
|
44
|
+
// lerna
|
|
45
|
+
if ((0, _fs.existsSync)((0, _path.join)(cwd, 'lerna.json'))) {
|
|
46
|
+
_mkdirp.default.sync((0, _path.join)(cwd, 'dist'));
|
|
47
|
+
const pkgs = (0, _project.getPackagesSync)(cwd);
|
|
48
|
+
var _iterator = _createForOfIteratorHelper(pkgs),
|
|
49
|
+
_step;
|
|
50
|
+
try {
|
|
51
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
52
|
+
let pkg = _step.value;
|
|
53
|
+
const pkgPath = pkg.contents;
|
|
54
|
+
if (!(0, _fs.statSync)(pkgPath).isDirectory()) continue;
|
|
55
|
+
moveEsLibToDist(pkgPath);
|
|
56
|
+
(0, _fs.renameSync)((0, _path.join)(pkgPath, 'dist'), (0, _path.join)(cwd, 'dist', pkgPath.split(_path.sep).pop()));
|
|
57
|
+
}
|
|
58
|
+
} catch (err) {
|
|
59
|
+
_iterator.e(err);
|
|
60
|
+
} finally {
|
|
61
|
+
_iterator.f();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildPluginClient = buildPluginClient;
|
|
7
|
+
exports.buildPluginServer = buildPluginServer;
|
|
8
|
+
exports.buildServerDeps = buildServerDeps;
|
|
9
|
+
exports.deleteJsFiles = deleteJsFiles;
|
|
10
|
+
var _ncc = _interopRequireDefault(require("@vercel/ncc"));
|
|
11
|
+
var _pluginReact = _interopRequireDefault(require("@vitejs/plugin-react"));
|
|
12
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
13
|
+
var _fastGlob = _interopRequireDefault(require("fast-glob"));
|
|
14
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
15
|
+
var _path = _interopRequireDefault(require("path"));
|
|
16
|
+
var _tsup = require("tsup");
|
|
17
|
+
var _vite = require("vite");
|
|
18
|
+
var _vitePluginCssInjectedByJs = _interopRequireDefault(require("vite-plugin-css-injected-by-js"));
|
|
19
|
+
var _buildPluginUtils = require("./utils/buildPluginUtils");
|
|
20
|
+
var _getDepsConfig = require("./utils/getDepsConfig");
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
24
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
26
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
27
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
28
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
29
|
+
const serverGlobalFiles = ['src/**', '!src/**/__tests__', '!src/client/**'];
|
|
30
|
+
const clientGlobalFiles = ['src/client/**', '!src/**/__tests__'];
|
|
31
|
+
const external = [
|
|
32
|
+
// nocobase
|
|
33
|
+
'@nocobase/acl', '@nocobase/actions', '@nocobase/auth', '@nocobase/cache', '@nocobase/client', '@nocobase/database', '@nocobase/evaluators', '@nocobase/logger', '@nocobase/resourcer', '@nocobase/sdk', '@nocobase/server', '@nocobase/test', '@nocobase/utils',
|
|
34
|
+
// @nocobase/auth
|
|
35
|
+
'jsonwebtoken',
|
|
36
|
+
// @nocobase/cache
|
|
37
|
+
'cache-manager',
|
|
38
|
+
// @nocobase/database
|
|
39
|
+
'sequelize', 'umzug', 'async-mutex',
|
|
40
|
+
// @nocobase/evaluators
|
|
41
|
+
'@formulajs/formulajs', 'mathjs',
|
|
42
|
+
// @nocobase/logger
|
|
43
|
+
'winston', 'winston-daily-rotate-file',
|
|
44
|
+
// koa
|
|
45
|
+
'koa', '@koa/cors', '@koa/router', 'multer', '@koa/multer', 'koa-bodyparser', 'koa-static', 'koa-send',
|
|
46
|
+
// react
|
|
47
|
+
'react', 'react-dom', 'react/jsx-runtime',
|
|
48
|
+
// react-router
|
|
49
|
+
'react-router', 'react-router-dom',
|
|
50
|
+
// antd
|
|
51
|
+
'antd', 'antd-style', '@ant-design/icons', '@ant-design/cssinjs',
|
|
52
|
+
// i18next
|
|
53
|
+
'i18next', 'react-i18next',
|
|
54
|
+
// dnd-kit 相关
|
|
55
|
+
'@dnd-kit/accessibility', '@dnd-kit/core', '@dnd-kit/modifiers', '@dnd-kit/sortable', '@dnd-kit/utilities',
|
|
56
|
+
// formily 相关
|
|
57
|
+
'@formily/antd-v5', '@formily/core', '@formily/react', '@formily/json-schema', '@formily/path', '@formily/validator', '@formily/shared', '@formily/reactive', '@formily/reactive-react',
|
|
58
|
+
// utils
|
|
59
|
+
'dayjs', 'mysql2', 'pg', 'pg-hstore', 'sqlite3', 'supertest', 'axios', '@emotion/css', 'ahooks', 'lodash', 'china-division', 'cronstrue'];
|
|
60
|
+
const pluginPrefix = (process.env.PLUGIN_PACKAGE_PREFIX || '@nocobase/plugin-,@nocobase/preset-,@nocobase/plugin-pro-').split(',');
|
|
61
|
+
const target_dir = 'dist';
|
|
62
|
+
function deleteJsFiles(cwd, log) {
|
|
63
|
+
log('delete babel js files');
|
|
64
|
+
const jsFiles = _fastGlob.default.globSync(['**/*', '!**/*.d.ts', '!node_modules'], {
|
|
65
|
+
cwd: _path.default.join(cwd, target_dir),
|
|
66
|
+
absolute: true
|
|
67
|
+
});
|
|
68
|
+
jsFiles.forEach(item => {
|
|
69
|
+
_fsExtra.default.unlinkSync(item);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function buildServerDeps(_x, _x2, _x3) {
|
|
73
|
+
return _buildServerDeps.apply(this, arguments);
|
|
74
|
+
}
|
|
75
|
+
function _buildServerDeps() {
|
|
76
|
+
_buildServerDeps = _asyncToGenerator(function* (cwd, serverFiles, log) {
|
|
77
|
+
log('build server dependencies');
|
|
78
|
+
const outDir = _path.default.join(cwd, target_dir, 'node_modules');
|
|
79
|
+
const sourcePackages = (0, _buildPluginUtils.getSourcePackages)(serverFiles);
|
|
80
|
+
const includePackages = (0, _buildPluginUtils.getIncludePackages)(sourcePackages, external, pluginPrefix);
|
|
81
|
+
const excludePackages = (0, _buildPluginUtils.getExcludePackages)(sourcePackages, external, pluginPrefix);
|
|
82
|
+
let tips = [];
|
|
83
|
+
if (includePackages.length) {
|
|
84
|
+
tips.push(`These packages ${_chalk.default.yellow(includePackages.join(', '))} will be ${_chalk.default.bold('bundled')} to dist/node_modules.`);
|
|
85
|
+
}
|
|
86
|
+
if (excludePackages.length) {
|
|
87
|
+
tips.push(`These packages ${_chalk.default.yellow(excludePackages.join(', '))} will be ${_chalk.default.bold('exclude')}.`);
|
|
88
|
+
}
|
|
89
|
+
tips.push(`For more information, please refer to: ${_chalk.default.blue('https://docs.nocobase.com/development/deps')}.`);
|
|
90
|
+
log(tips.join(' '));
|
|
91
|
+
if (!includePackages.length) return;
|
|
92
|
+
const deps = (0, _getDepsConfig.getDepsConfig)(cwd, outDir, includePackages, external);
|
|
93
|
+
|
|
94
|
+
// bundle deps
|
|
95
|
+
for (var _i = 0, _Object$keys = Object.keys(deps); _i < _Object$keys.length; _i++) {
|
|
96
|
+
const dep = _Object$keys[_i];
|
|
97
|
+
const _deps$dep = deps[dep],
|
|
98
|
+
outputDir = _deps$dep.outputDir,
|
|
99
|
+
mainFile = _deps$dep.mainFile,
|
|
100
|
+
pkg = _deps$dep.pkg,
|
|
101
|
+
nccConfig = _deps$dep.nccConfig,
|
|
102
|
+
depDir = _deps$dep.depDir;
|
|
103
|
+
const outputPackageJson = _path.default.join(outputDir, 'package.json');
|
|
104
|
+
|
|
105
|
+
// cache check
|
|
106
|
+
if (_fsExtra.default.existsSync(outputPackageJson)) {
|
|
107
|
+
const outputPackage = require(outputPackageJson);
|
|
108
|
+
if (outputPackage.version === pkg.version) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// copy package
|
|
114
|
+
yield _fsExtra.default.copy(depDir, outputDir, {
|
|
115
|
+
errorOnExist: false
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// delete files
|
|
119
|
+
const deleteFiles = _fastGlob.default.sync(['./**/*.map', './**/*.js.map', './**/*.md', './**/*.mjs', './**/*.png', './**/*.jpg', './**/*.jpeg', './**/*.gif', './**/*/.bin', './**/*/bin', './**/*/LICENSE', './**/*/tsconfig.json'], {
|
|
120
|
+
cwd: outputDir,
|
|
121
|
+
absolute: true
|
|
122
|
+
});
|
|
123
|
+
deleteFiles.forEach(file => {
|
|
124
|
+
_fsExtra.default.unlinkSync(file);
|
|
125
|
+
});
|
|
126
|
+
yield (0, _ncc.default)(dep, nccConfig).then(({
|
|
127
|
+
code,
|
|
128
|
+
assets
|
|
129
|
+
}) => {
|
|
130
|
+
// emit dist file
|
|
131
|
+
_fsExtra.default.writeFileSync(mainFile, code, 'utf-8');
|
|
132
|
+
|
|
133
|
+
// emit assets
|
|
134
|
+
Object.entries(assets).forEach(([name, item]) => {
|
|
135
|
+
_fsExtra.default.writeFileSync(_path.default.join(outputDir, name), item.source, {
|
|
136
|
+
encoding: 'utf-8',
|
|
137
|
+
mode: item.permissions
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// emit package.json
|
|
142
|
+
_fsExtra.default.writeFileSync(outputPackageJson, JSON.stringify(_objectSpread(_objectSpread({}, pkg), {}, {
|
|
143
|
+
_lastModified: new Date().toISOString()
|
|
144
|
+
})), 'utf-8');
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return _buildServerDeps.apply(this, arguments);
|
|
149
|
+
}
|
|
150
|
+
function buildPluginServer(_x4, _x5) {
|
|
151
|
+
return _buildPluginServer.apply(this, arguments);
|
|
152
|
+
}
|
|
153
|
+
function _buildPluginServer() {
|
|
154
|
+
_buildPluginServer = _asyncToGenerator(function* (cwd, log) {
|
|
155
|
+
log('build server source');
|
|
156
|
+
const packageJson = (0, _buildPluginUtils.getPackageJson)(cwd);
|
|
157
|
+
const serverFiles = _fastGlob.default.globSync(serverGlobalFiles, {
|
|
158
|
+
cwd,
|
|
159
|
+
absolute: true
|
|
160
|
+
});
|
|
161
|
+
(0, _buildPluginUtils.buildCheck)({
|
|
162
|
+
cwd,
|
|
163
|
+
packageJson,
|
|
164
|
+
entry: 'server',
|
|
165
|
+
files: serverFiles,
|
|
166
|
+
log
|
|
167
|
+
});
|
|
168
|
+
yield (0, _tsup.build)({
|
|
169
|
+
entry: serverFiles,
|
|
170
|
+
splitting: false,
|
|
171
|
+
clean: false,
|
|
172
|
+
bundle: false,
|
|
173
|
+
silent: true,
|
|
174
|
+
treeshake: true,
|
|
175
|
+
target: 'node16',
|
|
176
|
+
outDir: _path.default.join(cwd, target_dir),
|
|
177
|
+
format: 'cjs',
|
|
178
|
+
skipNodeModulesBundle: true
|
|
179
|
+
});
|
|
180
|
+
yield buildServerDeps(cwd, serverFiles, log);
|
|
181
|
+
});
|
|
182
|
+
return _buildPluginServer.apply(this, arguments);
|
|
183
|
+
}
|
|
184
|
+
function buildPluginClient(cwd, log) {
|
|
185
|
+
log('build client');
|
|
186
|
+
const packageJson = (0, _buildPluginUtils.getPackageJson)(cwd);
|
|
187
|
+
const clientFiles = _fastGlob.default.globSync(clientGlobalFiles, {
|
|
188
|
+
cwd,
|
|
189
|
+
absolute: true
|
|
190
|
+
});
|
|
191
|
+
const sourcePackages = (0, _buildPluginUtils.getSourcePackages)(clientFiles);
|
|
192
|
+
const excludePackages = (0, _buildPluginUtils.getExcludePackages)(sourcePackages, external, pluginPrefix);
|
|
193
|
+
(0, _buildPluginUtils.buildCheck)({
|
|
194
|
+
cwd,
|
|
195
|
+
packageJson,
|
|
196
|
+
entry: 'client',
|
|
197
|
+
files: clientFiles,
|
|
198
|
+
log
|
|
199
|
+
});
|
|
200
|
+
const outDir = _path.default.join(cwd, target_dir, 'client');
|
|
201
|
+
const globals = excludePackages.reduce((prev, curr) => {
|
|
202
|
+
if (curr.startsWith('@nocobase')) {
|
|
203
|
+
prev[`${curr}/client`] = curr;
|
|
204
|
+
}
|
|
205
|
+
prev[curr] = curr;
|
|
206
|
+
return prev;
|
|
207
|
+
}, {});
|
|
208
|
+
const entry = _fastGlob.default.globSync('src/client/index.{ts,tsx,js,jsx}', {
|
|
209
|
+
cwd
|
|
210
|
+
});
|
|
211
|
+
const outputFileName = 'index.js';
|
|
212
|
+
return (0, _vite.build)({
|
|
213
|
+
mode: 'production',
|
|
214
|
+
define: {
|
|
215
|
+
'process.env.NODE_ENV': JSON.stringify('production')
|
|
216
|
+
},
|
|
217
|
+
logLevel: 'warn',
|
|
218
|
+
build: {
|
|
219
|
+
minify: false,
|
|
220
|
+
outDir,
|
|
221
|
+
cssCodeSplit: false,
|
|
222
|
+
emptyOutDir: false,
|
|
223
|
+
lib: {
|
|
224
|
+
entry,
|
|
225
|
+
formats: ['umd'],
|
|
226
|
+
name: packageJson.name,
|
|
227
|
+
fileName: () => outputFileName
|
|
228
|
+
},
|
|
229
|
+
rollupOptions: {
|
|
230
|
+
cache: true,
|
|
231
|
+
external: Object.keys(globals),
|
|
232
|
+
output: {
|
|
233
|
+
exports: 'named',
|
|
234
|
+
globals
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
plugins: [(0, _pluginReact.default)(), (0, _vitePluginCssInjectedByJs.default)({
|
|
239
|
+
styleId: packageJson.name
|
|
240
|
+
}), {
|
|
241
|
+
name: 'check-file-size',
|
|
242
|
+
closeBundle() {
|
|
243
|
+
const file = _path.default.join(outDir, outputFileName);
|
|
244
|
+
if (!_fsExtra.default.existsSync(file)) return;
|
|
245
|
+
const fileSize = (0, _buildPluginUtils.getFileSize)(_path.default.join(outDir, outputFileName));
|
|
246
|
+
if (fileSize > 1024 * 1024) {
|
|
247
|
+
log('The bundle file size exceeds 1MB %s. ', _chalk.default.red((0, _buildPluginUtils.formatFileSize)(fileSize)));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}]
|
|
251
|
+
});
|
|
252
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _normalizeBundleOpts = _interopRequireDefault(require("./normalizeBundleOpts"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
test('normal', () => {
|
|
6
|
+
expect((0, _normalizeBundleOpts.default)('a', {
|
|
7
|
+
umd: {
|
|
8
|
+
name: 'foo'
|
|
9
|
+
},
|
|
10
|
+
overridesByEntry: {
|
|
11
|
+
a: {
|
|
12
|
+
umd: {
|
|
13
|
+
name: 'bar'
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
})).toEqual({
|
|
18
|
+
umd: {
|
|
19
|
+
name: 'bar'
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
test('ignore ./ prefix in entry', () => {
|
|
24
|
+
expect((0, _normalizeBundleOpts.default)('./a', {
|
|
25
|
+
umd: {
|
|
26
|
+
name: 'foo'
|
|
27
|
+
},
|
|
28
|
+
overridesByEntry: {
|
|
29
|
+
a: {
|
|
30
|
+
umd: {
|
|
31
|
+
name: 'bar'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
})).toEqual({
|
|
36
|
+
umd: {
|
|
37
|
+
name: 'bar'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
test('ignore ./ prefix in overridesByEntry', () => {
|
|
42
|
+
expect((0, _normalizeBundleOpts.default)('a', {
|
|
43
|
+
umd: {
|
|
44
|
+
name: 'foo'
|
|
45
|
+
},
|
|
46
|
+
overridesByEntry: {
|
|
47
|
+
'./a': {
|
|
48
|
+
umd: {
|
|
49
|
+
name: 'bar'
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
})).toEqual({
|
|
54
|
+
umd: {
|
|
55
|
+
name: 'bar'
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
test('deep merge', () => {
|
|
60
|
+
expect((0, _normalizeBundleOpts.default)('a', {
|
|
61
|
+
umd: {
|
|
62
|
+
minFile: false,
|
|
63
|
+
name: 'foo'
|
|
64
|
+
},
|
|
65
|
+
overridesByEntry: {
|
|
66
|
+
a: {
|
|
67
|
+
umd: {
|
|
68
|
+
name: 'bar'
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
})).toEqual({
|
|
73
|
+
umd: {
|
|
74
|
+
minFile: false,
|
|
75
|
+
name: 'bar'
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|