@unpackjs/core 1.5.4 → 1.6.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/bin/openChrome.applescript +94 -0
- package/compiled/chokidar/index.d.ts +327 -0
- package/compiled/chokidar/index.js +1773 -0
- package/compiled/chokidar/license +21 -0
- package/compiled/chokidar/package.json +1 -0
- package/compiled/commander/index.d.ts +971 -0
- package/compiled/commander/index.js +2190 -0
- package/compiled/commander/license +22 -0
- package/compiled/commander/package.json +1 -0
- package/compiled/css-loader/api.js +85 -0
- package/compiled/css-loader/getUrl.js +26 -0
- package/compiled/css-loader/index.d.ts +1 -0
- package/compiled/css-loader/index.js +8004 -0
- package/compiled/css-loader/license +20 -0
- package/compiled/css-loader/noSourceMaps.js +5 -0
- package/compiled/css-loader/package.json +1 -0
- package/compiled/css-loader/sourceMaps.js +16 -0
- package/compiled/fast-glob/index.d.ts +237 -0
- package/compiled/fast-glob/index.js +5726 -0
- package/compiled/fast-glob/license +21 -0
- package/compiled/fast-glob/package.json +1 -0
- package/compiled/less-loader/index.d.ts +1 -0
- package/compiled/less-loader/index.js +340 -0
- package/compiled/less-loader/license +20 -0
- package/compiled/less-loader/package.json +1 -0
- package/compiled/line-diff/index.d.ts +1 -0
- package/compiled/line-diff/index.js +160 -0
- package/compiled/line-diff/license +21 -0
- package/compiled/line-diff/package.json +1 -0
- package/compiled/log-update/index.d.ts +1 -0
- package/compiled/log-update/index.js +1970 -0
- package/compiled/log-update/package.json +1 -0
- package/compiled/portfinder/index.d.ts +64 -0
- package/compiled/portfinder/index.js +3401 -0
- package/compiled/portfinder/license +22 -0
- package/compiled/portfinder/package.json +1 -0
- package/compiled/postcss-loader/index.d.ts +1 -0
- package/compiled/postcss-loader/index.js +94945 -0
- package/compiled/postcss-loader/license +20 -0
- package/compiled/postcss-loader/package.json +1 -0
- package/compiled/sass-loader/index.d.ts +961 -0
- package/compiled/sass-loader/index.js +5610 -0
- package/compiled/sass-loader/index1.js +65 -0
- package/compiled/sass-loader/license +20 -0
- package/compiled/sass-loader/package.json +1 -0
- package/compiled/sass-loader/sass.node.js +12 -0
- package/compiled/semver/index.d.ts +1 -0
- package/compiled/semver/index.js +1940 -0
- package/compiled/semver/license +15 -0
- package/compiled/semver/package.json +1 -0
- package/compiled/style-loader/index.d.ts +1 -0
- package/compiled/style-loader/index.js +370 -0
- package/compiled/style-loader/license +20 -0
- package/compiled/style-loader/package.json +1 -0
- package/compiled/style-loader/runtime/injectStylesIntoLinkTag.js +29 -0
- package/compiled/style-loader/runtime/injectStylesIntoStyleTag.js +84 -0
- package/compiled/style-loader/runtime/insertBySelector.js +34 -0
- package/compiled/style-loader/runtime/insertStyleElement.js +10 -0
- package/compiled/style-loader/runtime/isEqualLocals.js +28 -0
- package/compiled/style-loader/runtime/isOldIE.js +17 -0
- package/compiled/style-loader/runtime/setAttributesWithAttributes.js +13 -0
- package/compiled/style-loader/runtime/setAttributesWithAttributesAndNonce.js +9 -0
- package/compiled/style-loader/runtime/setAttributesWithoutAttributes.js +10 -0
- package/compiled/style-loader/runtime/singletonStyleDomAPI.js +86 -0
- package/compiled/style-loader/runtime/styleDomAPI.js +61 -0
- package/compiled/style-loader/runtime/styleTagTransform.js +14 -0
- package/compiled/webpack-bundle-analyzer/index.d.ts +1 -0
- package/compiled/webpack-bundle-analyzer/index.js +13276 -0
- package/compiled/webpack-bundle-analyzer/license +20 -0
- package/compiled/webpack-bundle-analyzer/package.json +1 -0
- package/compiled/webpack-bundle-analyzer/public/viewer.js +16 -0
- package/compiled/webpack-bundle-analyzer/public/viewer.js.LICENSE.txt +10 -0
- package/compiled/webpack-merge/index.d.ts +31 -0
- package/compiled/webpack-merge/index.js +1200 -0
- package/compiled/webpack-merge/license +20 -0
- package/compiled/webpack-merge/package.json +1 -0
- package/dist/bundleRequire.cjs +200 -0
- package/dist/bundleRequire.d.ts +5 -0
- package/dist/bundleRequire.d.ts.map +1 -0
- package/dist/bundleRequire.js +173 -0
- package/dist/bundler-config/chunkSplit.cjs +151 -0
- package/dist/bundler-config/chunkSplit.d.ts +6 -0
- package/dist/bundler-config/chunkSplit.d.ts.map +1 -0
- package/dist/bundler-config/chunkSplit.js +127 -0
- package/dist/bundler-config/css.cjs +167 -0
- package/dist/bundler-config/css.d.ts +6 -0
- package/dist/bundler-config/css.d.ts.map +1 -0
- package/dist/bundler-config/css.js +158 -0
- package/dist/bundler-config/experimentCss.cjs +166 -0
- package/dist/bundler-config/experimentCss.d.ts +6 -0
- package/dist/bundler-config/experimentCss.d.ts.map +1 -0
- package/dist/bundler-config/experimentCss.js +157 -0
- package/dist/bundler-config/helper.cjs +83 -0
- package/dist/bundler-config/helper.d.ts +8 -0
- package/dist/bundler-config/helper.d.ts.map +1 -0
- package/dist/bundler-config/helper.js +58 -0
- package/dist/bundler-config/index.cjs +204 -0
- package/dist/bundler-config/index.d.ts +3 -0
- package/dist/bundler-config/index.d.ts.map +1 -0
- package/dist/bundler-config/index.js +180 -0
- package/dist/colors.cjs +60 -0
- package/dist/colors.d.ts +6 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +40 -0
- package/dist/{config/index.cjs → config.cjs} +21 -47
- package/dist/{config/index.d.ts → config.d.ts} +4 -3
- package/dist/config.d.ts.map +1 -0
- package/dist/{config/index.js → config.js} +18 -52
- package/dist/constants.cjs +86 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +61 -0
- package/dist/createUnpack.cjs +102 -0
- package/dist/createUnpack.d.ts +7 -0
- package/dist/createUnpack.d.ts.map +1 -0
- package/dist/createUnpack.js +78 -0
- package/dist/index.cjs +26 -48
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -52
- package/dist/lightningcss/cache.cjs +36 -0
- package/dist/lightningcss/cache.d.ts +2 -0
- package/dist/lightningcss/cache.d.ts.map +1 -0
- package/dist/lightningcss/cache.js +22 -0
- package/dist/lightningcss/index.cjs +21 -0
- package/dist/lightningcss/index.d.ts +2 -0
- package/dist/lightningcss/index.d.ts.map +1 -0
- package/dist/lightningcss/index.js +10 -0
- package/dist/lightningcss/loader.cjs +56 -0
- package/dist/lightningcss/loader.d.ts +5 -0
- package/dist/lightningcss/loader.d.ts.map +1 -0
- package/dist/lightningcss/loader.js +36 -0
- package/dist/lightningcss/minimizer.cjs +114 -0
- package/dist/lightningcss/minimizer.d.ts +11 -0
- package/dist/lightningcss/minimizer.d.ts.map +1 -0
- package/dist/lightningcss/minimizer.js +90 -0
- package/dist/logger.cjs +103 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +79 -0
- package/dist/openBrowser.cjs +85 -0
- package/dist/openBrowser.d.ts +2 -0
- package/dist/openBrowser.d.ts.map +1 -0
- package/dist/openBrowser.js +61 -0
- package/dist/plugin-progress/rspack.cjs +74 -0
- package/dist/plugin-progress/rspack.d.ts +9 -0
- package/dist/plugin-progress/rspack.d.ts.map +1 -0
- package/dist/plugin-progress/rspack.js +50 -0
- package/dist/plugin-progress/webpack.cjs +84 -0
- package/dist/plugin-progress/webpack.d.ts +9 -0
- package/dist/plugin-progress/webpack.d.ts.map +1 -0
- package/dist/plugin-progress/webpack.js +60 -0
- package/dist/plugin.cjs +33 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +19 -0
- package/dist/progressBar.cjs +70 -0
- package/dist/progressBar.d.ts +14 -0
- package/dist/progressBar.d.ts.map +1 -0
- package/dist/progressBar.js +46 -0
- package/dist/reporter.cjs +133 -0
- package/dist/reporter.d.ts +9 -0
- package/dist/reporter.d.ts.map +1 -0
- package/dist/reporter.js +109 -0
- package/dist/run/build.cjs +77 -0
- package/dist/run/build.d.ts +3 -0
- package/dist/run/build.d.ts.map +1 -0
- package/dist/run/build.js +53 -0
- package/dist/run/dev.cjs +107 -0
- package/dist/run/dev.d.ts +3 -0
- package/dist/run/dev.d.ts.map +1 -0
- package/dist/run/dev.js +83 -0
- package/dist/run/index.cjs +23 -0
- package/dist/run/index.d.ts +3 -0
- package/dist/run/index.d.ts.map +1 -0
- package/dist/run/index.js +11 -0
- package/dist/thread-loader/WorkerError.cjs +41 -0
- package/dist/thread-loader/WorkerError.js +31 -0
- package/dist/thread-loader/WorkerPool.cjs +407 -0
- package/dist/thread-loader/WorkerPool.js +387 -0
- package/dist/thread-loader/index.cjs +100 -0
- package/dist/thread-loader/index.js +85 -0
- package/dist/thread-loader/readBuffer.cjs +55 -0
- package/dist/thread-loader/readBuffer.js +45 -0
- package/dist/thread-loader/serializer.cjs +46 -0
- package/dist/thread-loader/serializer.js +31 -0
- package/dist/thread-loader/utils.cjs +84 -0
- package/dist/thread-loader/utils.js +60 -0
- package/dist/thread-loader/worker.cjs +377 -0
- package/dist/thread-loader/worker.js +382 -0
- package/dist/thread-loader/workerPools.cjs +57 -0
- package/dist/thread-loader/workerPools.js +33 -0
- package/dist/typed-css-modules/index.cjs +21 -0
- package/dist/typed-css-modules/index.d.ts +2 -0
- package/dist/typed-css-modules/index.d.ts.map +1 -0
- package/dist/typed-css-modules/index.js +10 -0
- package/dist/typed-css-modules/loader.cjs +195 -0
- package/dist/typed-css-modules/loader.d.ts +10 -0
- package/dist/typed-css-modules/loader.d.ts.map +1 -0
- package/dist/typed-css-modules/loader.js +170 -0
- package/dist/typed-css-modules/plugin.cjs +96 -0
- package/dist/typed-css-modules/plugin.d.ts +16 -0
- package/dist/typed-css-modules/plugin.d.ts.map +1 -0
- package/dist/typed-css-modules/plugin.js +72 -0
- package/dist/typed-css-modules/utils.cjs +45 -0
- package/dist/typed-css-modules/utils.d.ts +6 -0
- package/dist/typed-css-modules/utils.d.ts.map +1 -0
- package/dist/typed-css-modules/utils.js +31 -0
- package/dist/types/chunkSplit.cjs +15 -0
- package/dist/types/chunkSplit.d.ts +35 -0
- package/dist/types/chunkSplit.d.ts.map +1 -0
- package/dist/types/chunkSplit.js +9 -0
- package/dist/types/config.cjs +15 -0
- package/dist/types/config.d.ts +176 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +9 -0
- package/dist/types/index.cjs +29 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/lightningcss.cjs +15 -0
- package/dist/types/lightningcss.d.ts +11 -0
- package/dist/types/lightningcss.d.ts.map +1 -0
- package/dist/types/lightningcss.js +9 -0
- package/dist/types/logger.cjs +35 -0
- package/dist/types/logger.d.ts +16 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/logger.js +21 -0
- package/dist/types/plugin.cjs +15 -0
- package/dist/types/plugin.d.ts +18 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +9 -0
- package/dist/utils.cjs +286 -0
- package/dist/utils.d.ts +43 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +235 -0
- package/package.json +95 -6
- package/dist/config/index.d.ts.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class ProgressBar {
|
|
2
|
+
options: {
|
|
3
|
+
width: number;
|
|
4
|
+
prefix: string;
|
|
5
|
+
char: string;
|
|
6
|
+
color: string;
|
|
7
|
+
};
|
|
8
|
+
update({ current: originalCurrent, message }: {
|
|
9
|
+
current: number;
|
|
10
|
+
message?: string;
|
|
11
|
+
}): void;
|
|
12
|
+
done(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=progressBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressBar.d.ts","sourceRoot":"","sources":["../src/progressBar.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IACtB,OAAO;;;;;MAKN;IACD,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,OAAY,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBxF,IAAI;CAGL"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
var require = createRequire(import.meta['url']);
|
|
3
|
+
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
var getFilename = () => fileURLToPath(import.meta.url);
|
|
7
|
+
var getDirname = () => path.dirname(getFilename());
|
|
8
|
+
var __dirname = /* @__PURE__ */ getDirname();
|
|
9
|
+
var __filename = /* @__PURE__ */ getFilename();
|
|
10
|
+
import colors from "./colors.js";
|
|
11
|
+
const logUpdate = require("../compiled/log-update/index.js");
|
|
12
|
+
class ProgressBar {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.options = {
|
|
15
|
+
width: 25,
|
|
16
|
+
prefix: "",
|
|
17
|
+
char: "▨",
|
|
18
|
+
color: "green"
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
update({ current: originalCurrent, message = "" }) {
|
|
22
|
+
const { columns: terminalWidth } = process.stdout;
|
|
23
|
+
const messageWidth = terminalWidth - this.options.width - this.options.prefix.length - 7;
|
|
24
|
+
let current = originalCurrent;
|
|
25
|
+
if (originalCurrent >= 0.98) {
|
|
26
|
+
current = 1;
|
|
27
|
+
}
|
|
28
|
+
const doneWidth = Math.floor(current * this.options.width);
|
|
29
|
+
const undoneWidth = this.options.width - doneWidth;
|
|
30
|
+
const done = colors[this.options.color](this.options.char).repeat(doneWidth);
|
|
31
|
+
const undone = colors.dim(this.options.char).repeat(undoneWidth);
|
|
32
|
+
const bar = `${done}${undone}`;
|
|
33
|
+
const prefix = this.options.prefix ? `${colors.bold(this.options.prefix)} ` : "";
|
|
34
|
+
logUpdate(
|
|
35
|
+
`${prefix}${bar} (${Math.floor(
|
|
36
|
+
current * 100
|
|
37
|
+
)}%) ${colors.dim(message.slice(0, messageWidth))}`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
done() {
|
|
41
|
+
logUpdate.done();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
ProgressBar
|
|
46
|
+
};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var reporter_exports = {};
|
|
29
|
+
__export(reporter_exports, {
|
|
30
|
+
printFileSize: () => printFileSize
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(reporter_exports);
|
|
33
|
+
var import_node_fs = __toESM(require("node:fs"));
|
|
34
|
+
var import_node_path = __toESM(require("node:path"));
|
|
35
|
+
var import_node_util = require("node:util");
|
|
36
|
+
var import_node_zlib = __toESM(require("node:zlib"));
|
|
37
|
+
var import_colors = __toESM(require("./colors.cjs"));
|
|
38
|
+
const chunkGroups = [
|
|
39
|
+
{ type: "HTML", color: "green", chunks: [] },
|
|
40
|
+
{ type: "CSS", color: "magenta", chunks: [] },
|
|
41
|
+
{ type: "JS", color: "cyan", chunks: [] }
|
|
42
|
+
];
|
|
43
|
+
const chunkGroupMap = chunkGroups.reduce(
|
|
44
|
+
(acc, cur) => {
|
|
45
|
+
acc[cur.type] = cur;
|
|
46
|
+
return acc;
|
|
47
|
+
},
|
|
48
|
+
{}
|
|
49
|
+
);
|
|
50
|
+
const chunkSizeLimit = 500;
|
|
51
|
+
const gzip = (0, import_node_util.promisify)(import_node_zlib.default.gzip);
|
|
52
|
+
const numberFormatter = new Intl.NumberFormat("en", {
|
|
53
|
+
maximumFractionDigits: 2,
|
|
54
|
+
minimumFractionDigits: 2
|
|
55
|
+
});
|
|
56
|
+
const displaySize = (bytes) => {
|
|
57
|
+
return `${numberFormatter.format(bytes / 1e3)} kB`;
|
|
58
|
+
};
|
|
59
|
+
async function getCompressedSize(content) {
|
|
60
|
+
const data = await gzip(content);
|
|
61
|
+
return data.length;
|
|
62
|
+
}
|
|
63
|
+
async function printFileSize({ root, stats }) {
|
|
64
|
+
const distPath = stats.compilation.outputOptions.path;
|
|
65
|
+
const distFolder = import_node_path.default.relative(root, distPath);
|
|
66
|
+
const origin = stats.toJson({
|
|
67
|
+
all: false,
|
|
68
|
+
assets: true,
|
|
69
|
+
cachedAssets: true,
|
|
70
|
+
groupAssetsByInfo: false,
|
|
71
|
+
groupAssetsByPath: false,
|
|
72
|
+
groupAssetsByChunk: false,
|
|
73
|
+
groupAssetsByExtension: false,
|
|
74
|
+
groupAssetsByEmitStatus: false
|
|
75
|
+
});
|
|
76
|
+
let longest = 0;
|
|
77
|
+
let biggestSize = 0;
|
|
78
|
+
let biggestCompressSize = 0;
|
|
79
|
+
await Promise.all(
|
|
80
|
+
origin.assets.map(async (asset) => {
|
|
81
|
+
const content = await import_node_fs.default.promises.readFile(import_node_path.default.join(distPath, asset.name));
|
|
82
|
+
const size = content.length;
|
|
83
|
+
const compressedSize = await getCompressedSize(content);
|
|
84
|
+
const chunk = {
|
|
85
|
+
name: import_node_path.default.basename(asset.name),
|
|
86
|
+
path: `${distFolder}/${asset.name}`,
|
|
87
|
+
size,
|
|
88
|
+
compressedSize
|
|
89
|
+
};
|
|
90
|
+
if (chunk.path.length > longest) {
|
|
91
|
+
longest = chunk.path.length;
|
|
92
|
+
}
|
|
93
|
+
if (size > biggestSize)
|
|
94
|
+
biggestSize = size;
|
|
95
|
+
if (compressedSize > biggestCompressSize)
|
|
96
|
+
biggestCompressSize = compressedSize;
|
|
97
|
+
const ext = import_node_path.default.extname(asset.name);
|
|
98
|
+
switch (ext) {
|
|
99
|
+
case ".html":
|
|
100
|
+
chunkGroupMap.HTML.chunks.push(chunk);
|
|
101
|
+
break;
|
|
102
|
+
case ".css":
|
|
103
|
+
chunkGroupMap.CSS.chunks.push(chunk);
|
|
104
|
+
break;
|
|
105
|
+
case ".js":
|
|
106
|
+
chunkGroupMap.JS.chunks.push(chunk);
|
|
107
|
+
break;
|
|
108
|
+
default:
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
);
|
|
113
|
+
const sizePad = displaySize(biggestSize).length;
|
|
114
|
+
const compressPad = displaySize(biggestCompressSize).length;
|
|
115
|
+
chunkGroups.forEach((group) => {
|
|
116
|
+
group.chunks.sort((a, b) => a.size - b.size).forEach((chunk) => {
|
|
117
|
+
const isLarge = group.type === "JS" && chunk.size / 1e3 > chunkSizeLimit;
|
|
118
|
+
const sizeColor = isLarge ? "yellow" : "dim";
|
|
119
|
+
const relativeOutDir = import_node_path.default.dirname(chunk.path) + "/";
|
|
120
|
+
let log = import_colors.default.dim(relativeOutDir);
|
|
121
|
+
log += import_colors.default[group.color](chunk.name.padEnd(longest + 2 - relativeOutDir.length));
|
|
122
|
+
log += import_colors.default[sizeColor](import_colors.default.bold(displaySize(chunk.size).padStart(sizePad)));
|
|
123
|
+
if (chunk.compressedSize) {
|
|
124
|
+
log += import_colors.default.dim(` │ gzip: ${displaySize(chunk.compressedSize).padStart(compressPad)}`);
|
|
125
|
+
}
|
|
126
|
+
console.log(log);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
131
|
+
0 && (module.exports = {
|
|
132
|
+
printFileSize
|
|
133
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Stats as RspackStats } from '@rspack/core';
|
|
2
|
+
import type { Stats as WebpackStats } from 'webpack';
|
|
3
|
+
type Options = {
|
|
4
|
+
root: string;
|
|
5
|
+
stats: WebpackStats | RspackStats;
|
|
6
|
+
};
|
|
7
|
+
export declare function printFileSize({ root, stats }: Options): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,SAAS,CAAA;AAGpD,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,YAAY,GAAG,WAAW,CAAA;CAClC,CAAA;AAsCD,wBAAsB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,iBAsE3D"}
|
package/dist/reporter.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
var require = createRequire(import.meta['url']);
|
|
3
|
+
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
var getFilename = () => fileURLToPath(import.meta.url);
|
|
7
|
+
var getDirname = () => path.dirname(getFilename());
|
|
8
|
+
var __dirname = /* @__PURE__ */ getDirname();
|
|
9
|
+
var __filename = /* @__PURE__ */ getFilename();
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import path2 from "node:path";
|
|
12
|
+
import { promisify } from "node:util";
|
|
13
|
+
import zlib from "node:zlib";
|
|
14
|
+
import colors from "./colors.js";
|
|
15
|
+
const chunkGroups = [
|
|
16
|
+
{ type: "HTML", color: "green", chunks: [] },
|
|
17
|
+
{ type: "CSS", color: "magenta", chunks: [] },
|
|
18
|
+
{ type: "JS", color: "cyan", chunks: [] }
|
|
19
|
+
];
|
|
20
|
+
const chunkGroupMap = chunkGroups.reduce(
|
|
21
|
+
(acc, cur) => {
|
|
22
|
+
acc[cur.type] = cur;
|
|
23
|
+
return acc;
|
|
24
|
+
},
|
|
25
|
+
{}
|
|
26
|
+
);
|
|
27
|
+
const chunkSizeLimit = 500;
|
|
28
|
+
const gzip = promisify(zlib.gzip);
|
|
29
|
+
const numberFormatter = new Intl.NumberFormat("en", {
|
|
30
|
+
maximumFractionDigits: 2,
|
|
31
|
+
minimumFractionDigits: 2
|
|
32
|
+
});
|
|
33
|
+
const displaySize = (bytes) => {
|
|
34
|
+
return `${numberFormatter.format(bytes / 1e3)} kB`;
|
|
35
|
+
};
|
|
36
|
+
async function getCompressedSize(content) {
|
|
37
|
+
const data = await gzip(content);
|
|
38
|
+
return data.length;
|
|
39
|
+
}
|
|
40
|
+
async function printFileSize({ root, stats }) {
|
|
41
|
+
const distPath = stats.compilation.outputOptions.path;
|
|
42
|
+
const distFolder = path2.relative(root, distPath);
|
|
43
|
+
const origin = stats.toJson({
|
|
44
|
+
all: false,
|
|
45
|
+
assets: true,
|
|
46
|
+
cachedAssets: true,
|
|
47
|
+
groupAssetsByInfo: false,
|
|
48
|
+
groupAssetsByPath: false,
|
|
49
|
+
groupAssetsByChunk: false,
|
|
50
|
+
groupAssetsByExtension: false,
|
|
51
|
+
groupAssetsByEmitStatus: false
|
|
52
|
+
});
|
|
53
|
+
let longest = 0;
|
|
54
|
+
let biggestSize = 0;
|
|
55
|
+
let biggestCompressSize = 0;
|
|
56
|
+
await Promise.all(
|
|
57
|
+
origin.assets.map(async (asset) => {
|
|
58
|
+
const content = await fs.promises.readFile(path2.join(distPath, asset.name));
|
|
59
|
+
const size = content.length;
|
|
60
|
+
const compressedSize = await getCompressedSize(content);
|
|
61
|
+
const chunk = {
|
|
62
|
+
name: path2.basename(asset.name),
|
|
63
|
+
path: `${distFolder}/${asset.name}`,
|
|
64
|
+
size,
|
|
65
|
+
compressedSize
|
|
66
|
+
};
|
|
67
|
+
if (chunk.path.length > longest) {
|
|
68
|
+
longest = chunk.path.length;
|
|
69
|
+
}
|
|
70
|
+
if (size > biggestSize)
|
|
71
|
+
biggestSize = size;
|
|
72
|
+
if (compressedSize > biggestCompressSize)
|
|
73
|
+
biggestCompressSize = compressedSize;
|
|
74
|
+
const ext = path2.extname(asset.name);
|
|
75
|
+
switch (ext) {
|
|
76
|
+
case ".html":
|
|
77
|
+
chunkGroupMap.HTML.chunks.push(chunk);
|
|
78
|
+
break;
|
|
79
|
+
case ".css":
|
|
80
|
+
chunkGroupMap.CSS.chunks.push(chunk);
|
|
81
|
+
break;
|
|
82
|
+
case ".js":
|
|
83
|
+
chunkGroupMap.JS.chunks.push(chunk);
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
);
|
|
90
|
+
const sizePad = displaySize(biggestSize).length;
|
|
91
|
+
const compressPad = displaySize(biggestCompressSize).length;
|
|
92
|
+
chunkGroups.forEach((group) => {
|
|
93
|
+
group.chunks.sort((a, b) => a.size - b.size).forEach((chunk) => {
|
|
94
|
+
const isLarge = group.type === "JS" && chunk.size / 1e3 > chunkSizeLimit;
|
|
95
|
+
const sizeColor = isLarge ? "yellow" : "dim";
|
|
96
|
+
const relativeOutDir = path2.dirname(chunk.path) + "/";
|
|
97
|
+
let log = colors.dim(relativeOutDir);
|
|
98
|
+
log += colors[group.color](chunk.name.padEnd(longest + 2 - relativeOutDir.length));
|
|
99
|
+
log += colors[sizeColor](colors.bold(displaySize(chunk.size).padStart(sizePad)));
|
|
100
|
+
if (chunk.compressedSize) {
|
|
101
|
+
log += colors.dim(` │ gzip: ${displaySize(chunk.compressedSize).padStart(compressPad)}`);
|
|
102
|
+
}
|
|
103
|
+
console.log(log);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
export {
|
|
108
|
+
printFileSize
|
|
109
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var build_exports = {};
|
|
29
|
+
__export(build_exports, {
|
|
30
|
+
bundlerBuild: () => bundlerBuild
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(build_exports);
|
|
33
|
+
var import_node_path = __toESM(require("node:path"));
|
|
34
|
+
var import_core = require("@rspack/core");
|
|
35
|
+
var import_utils = require("../utils.cjs");
|
|
36
|
+
var import_webpack = __toESM(require("webpack"));
|
|
37
|
+
var import_bundler_config = require("../bundler-config/index.cjs");
|
|
38
|
+
async function bundlerBuild(unpackConfig) {
|
|
39
|
+
const bundler = unpackConfig.bundler === "rspack" ? import_core.rspack : import_webpack.default;
|
|
40
|
+
const config = await (0, import_bundler_config.getBundlerConfig)(unpackConfig);
|
|
41
|
+
const compiler = bundler(config);
|
|
42
|
+
const handler = (err, stats) => {
|
|
43
|
+
if (err) {
|
|
44
|
+
console.error(err.stack || err);
|
|
45
|
+
if (err.details) {
|
|
46
|
+
console.error(err.details);
|
|
47
|
+
}
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (stats?.hasErrors()) {
|
|
51
|
+
console.log(
|
|
52
|
+
stats.toString({
|
|
53
|
+
colors: true,
|
|
54
|
+
preset: "errors-only"
|
|
55
|
+
})
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
if (!(0, import_utils.isWatch)()) {
|
|
59
|
+
compiler.close(() => {
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
if ((0, import_utils.isWatch)()) {
|
|
64
|
+
compiler.watch(
|
|
65
|
+
{
|
|
66
|
+
ignored: [import_node_path.default.resolve(unpackConfig.root, "unpack.config.*")]
|
|
67
|
+
},
|
|
68
|
+
handler
|
|
69
|
+
);
|
|
70
|
+
} else {
|
|
71
|
+
compiler.run(handler);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
+
0 && (module.exports = {
|
|
76
|
+
bundlerBuild
|
|
77
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/run/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAKnD,wBAAsB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
var require = createRequire(import.meta['url']);
|
|
3
|
+
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
var getFilename = () => fileURLToPath(import.meta.url);
|
|
7
|
+
var getDirname = () => path.dirname(getFilename());
|
|
8
|
+
var __dirname = /* @__PURE__ */ getDirname();
|
|
9
|
+
var __filename = /* @__PURE__ */ getFilename();
|
|
10
|
+
import path2 from "node:path";
|
|
11
|
+
import { rspack } from "@rspack/core";
|
|
12
|
+
import { isWatch } from "../utils.js";
|
|
13
|
+
import webpack from "webpack";
|
|
14
|
+
import { getBundlerConfig } from "../bundler-config/index.js";
|
|
15
|
+
async function bundlerBuild(unpackConfig) {
|
|
16
|
+
const bundler = unpackConfig.bundler === "rspack" ? rspack : webpack;
|
|
17
|
+
const config = await getBundlerConfig(unpackConfig);
|
|
18
|
+
const compiler = bundler(config);
|
|
19
|
+
const handler = (err, stats) => {
|
|
20
|
+
if (err) {
|
|
21
|
+
console.error(err.stack || err);
|
|
22
|
+
if (err.details) {
|
|
23
|
+
console.error(err.details);
|
|
24
|
+
}
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (stats?.hasErrors()) {
|
|
28
|
+
console.log(
|
|
29
|
+
stats.toString({
|
|
30
|
+
colors: true,
|
|
31
|
+
preset: "errors-only"
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
if (!isWatch()) {
|
|
36
|
+
compiler.close(() => {
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
if (isWatch()) {
|
|
41
|
+
compiler.watch(
|
|
42
|
+
{
|
|
43
|
+
ignored: [path2.resolve(unpackConfig.root, "unpack.config.*")]
|
|
44
|
+
},
|
|
45
|
+
handler
|
|
46
|
+
);
|
|
47
|
+
} else {
|
|
48
|
+
compiler.run(handler);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
bundlerBuild
|
|
53
|
+
};
|
package/dist/run/dev.cjs
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var dev_exports = {};
|
|
29
|
+
__export(dev_exports, {
|
|
30
|
+
bundlerDev: () => bundlerDev
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(dev_exports);
|
|
33
|
+
var import_core = require("@rspack/core");
|
|
34
|
+
var import_colors = __toESM(require("../colors.cjs"));
|
|
35
|
+
var import_logger = require("../logger.cjs");
|
|
36
|
+
var import_openBrowser = require("../openBrowser.cjs");
|
|
37
|
+
var import_utils = require("../utils.cjs");
|
|
38
|
+
var import_webpack = __toESM(require("webpack"));
|
|
39
|
+
var import_webpack_dev_server = __toESM(require("webpack-dev-server"));
|
|
40
|
+
var import_bundler_config = require("../bundler-config/index.cjs");
|
|
41
|
+
const chokidar = require("../../compiled/chokidar/index.js");
|
|
42
|
+
async function bundlerDev(unpackConfig) {
|
|
43
|
+
const bundler = unpackConfig.bundler === "rspack" ? import_core.rspack : import_webpack.default;
|
|
44
|
+
const config = await (0, import_bundler_config.getBundlerConfig)(unpackConfig);
|
|
45
|
+
const compiler = bundler(config);
|
|
46
|
+
const devServerOptions = {
|
|
47
|
+
hot: true,
|
|
48
|
+
port: await (0, import_utils.getPort)(unpackConfig.server?.port),
|
|
49
|
+
open: false,
|
|
50
|
+
client: {
|
|
51
|
+
overlay: false
|
|
52
|
+
},
|
|
53
|
+
proxy: unpackConfig.server?.proxy
|
|
54
|
+
};
|
|
55
|
+
const server = new import_webpack_dev_server.default(devServerOptions, compiler);
|
|
56
|
+
await server.start();
|
|
57
|
+
import_logger.logger.greet(
|
|
58
|
+
` ${import_colors.default.green(`${import_colors.default.bold("UNPACK")} v${"1.6.1"}`)} ${import_colors.default.dim(
|
|
59
|
+
`ready in ${import_colors.default.reset(
|
|
60
|
+
import_colors.default.bold(Math.ceil(performance.now() - global.__unpack_start_time))
|
|
61
|
+
)} ms`
|
|
62
|
+
)}
|
|
63
|
+
`
|
|
64
|
+
);
|
|
65
|
+
const addressUrls = (0, import_utils.getAddressUrls)({ port: devServerOptions.port });
|
|
66
|
+
const colorUrl = (url) => import_colors.default.cyan(url.replace(/:(\d+)\//, (_, port) => `:${import_colors.default.bold(port)}/`));
|
|
67
|
+
addressUrls.forEach((addr) => {
|
|
68
|
+
console.log(` ${import_colors.default.green("➜")} ${import_colors.default.bold(addr.label)}${colorUrl(addr.url)}`);
|
|
69
|
+
});
|
|
70
|
+
const { open } = unpackConfig.server;
|
|
71
|
+
if (open) {
|
|
72
|
+
const url = (0, import_utils.isString)(open) ? open : `http://localhost:${devServerOptions.port}`;
|
|
73
|
+
await (0, import_openBrowser.openBrowser)(url);
|
|
74
|
+
}
|
|
75
|
+
watchFiles();
|
|
76
|
+
}
|
|
77
|
+
function watchFiles() {
|
|
78
|
+
let lastMsg;
|
|
79
|
+
let sameCount = 0;
|
|
80
|
+
const watcher = chokidar.watch("src", {
|
|
81
|
+
ignoreInitial: true,
|
|
82
|
+
ignorePermissionErrors: true
|
|
83
|
+
});
|
|
84
|
+
watcher.on(
|
|
85
|
+
"change",
|
|
86
|
+
(0, import_utils.debounce)((path) => {
|
|
87
|
+
import_logger.logger.clear();
|
|
88
|
+
if (lastMsg === path) {
|
|
89
|
+
sameCount++;
|
|
90
|
+
} else {
|
|
91
|
+
sameCount = 0;
|
|
92
|
+
lastMsg = path;
|
|
93
|
+
}
|
|
94
|
+
console.log(
|
|
95
|
+
import_colors.default.dim((0, import_utils.getTime)()),
|
|
96
|
+
import_colors.default.cyan(import_colors.default.bold("[dev]")),
|
|
97
|
+
import_colors.default.green("hmr update"),
|
|
98
|
+
import_colors.default.dim(path),
|
|
99
|
+
import_colors.default.yellow(`(x${sameCount + 1})`)
|
|
100
|
+
);
|
|
101
|
+
}, 120)
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
105
|
+
0 && (module.exports = {
|
|
106
|
+
bundlerDev
|
|
107
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/run/dev.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAMnD,wBAAsB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC1E"}
|
package/dist/run/dev.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
var require = createRequire(import.meta['url']);
|
|
3
|
+
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
var getFilename = () => fileURLToPath(import.meta.url);
|
|
7
|
+
var getDirname = () => path.dirname(getFilename());
|
|
8
|
+
var __dirname = /* @__PURE__ */ getDirname();
|
|
9
|
+
var __filename = /* @__PURE__ */ getFilename();
|
|
10
|
+
const chokidar = require("../../compiled/chokidar/index.js");
|
|
11
|
+
import { rspack } from "@rspack/core";
|
|
12
|
+
import colors from "../colors.js";
|
|
13
|
+
import { logger } from "../logger.js";
|
|
14
|
+
import { openBrowser } from "../openBrowser.js";
|
|
15
|
+
import { debounce, getAddressUrls, getPort, getTime, isString } from "../utils.js";
|
|
16
|
+
import webpack from "webpack";
|
|
17
|
+
import WebpackDevServer from "webpack-dev-server";
|
|
18
|
+
import { getBundlerConfig } from "../bundler-config/index.js";
|
|
19
|
+
async function bundlerDev(unpackConfig) {
|
|
20
|
+
const bundler = unpackConfig.bundler === "rspack" ? rspack : webpack;
|
|
21
|
+
const config = await getBundlerConfig(unpackConfig);
|
|
22
|
+
const compiler = bundler(config);
|
|
23
|
+
const devServerOptions = {
|
|
24
|
+
hot: true,
|
|
25
|
+
port: await getPort(unpackConfig.server?.port),
|
|
26
|
+
open: false,
|
|
27
|
+
client: {
|
|
28
|
+
overlay: false
|
|
29
|
+
},
|
|
30
|
+
proxy: unpackConfig.server?.proxy
|
|
31
|
+
};
|
|
32
|
+
const server = new WebpackDevServer(devServerOptions, compiler);
|
|
33
|
+
await server.start();
|
|
34
|
+
logger.greet(
|
|
35
|
+
` ${colors.green(`${colors.bold("UNPACK")} v${"1.6.1"}`)} ${colors.dim(
|
|
36
|
+
`ready in ${colors.reset(
|
|
37
|
+
colors.bold(Math.ceil(performance.now() - global.__unpack_start_time))
|
|
38
|
+
)} ms`
|
|
39
|
+
)}
|
|
40
|
+
`
|
|
41
|
+
);
|
|
42
|
+
const addressUrls = getAddressUrls({ port: devServerOptions.port });
|
|
43
|
+
const colorUrl = (url) => colors.cyan(url.replace(/:(\d+)\//, (_, port) => `:${colors.bold(port)}/`));
|
|
44
|
+
addressUrls.forEach((addr) => {
|
|
45
|
+
console.log(` ${colors.green("➜")} ${colors.bold(addr.label)}${colorUrl(addr.url)}`);
|
|
46
|
+
});
|
|
47
|
+
const { open } = unpackConfig.server;
|
|
48
|
+
if (open) {
|
|
49
|
+
const url = isString(open) ? open : `http://localhost:${devServerOptions.port}`;
|
|
50
|
+
await openBrowser(url);
|
|
51
|
+
}
|
|
52
|
+
watchFiles();
|
|
53
|
+
}
|
|
54
|
+
function watchFiles() {
|
|
55
|
+
let lastMsg;
|
|
56
|
+
let sameCount = 0;
|
|
57
|
+
const watcher = chokidar.watch("src", {
|
|
58
|
+
ignoreInitial: true,
|
|
59
|
+
ignorePermissionErrors: true
|
|
60
|
+
});
|
|
61
|
+
watcher.on(
|
|
62
|
+
"change",
|
|
63
|
+
debounce((path2) => {
|
|
64
|
+
logger.clear();
|
|
65
|
+
if (lastMsg === path2) {
|
|
66
|
+
sameCount++;
|
|
67
|
+
} else {
|
|
68
|
+
sameCount = 0;
|
|
69
|
+
lastMsg = path2;
|
|
70
|
+
}
|
|
71
|
+
console.log(
|
|
72
|
+
colors.dim(getTime()),
|
|
73
|
+
colors.cyan(colors.bold("[dev]")),
|
|
74
|
+
colors.green("hmr update"),
|
|
75
|
+
colors.dim(path2),
|
|
76
|
+
colors.yellow(`(x${sameCount + 1})`)
|
|
77
|
+
);
|
|
78
|
+
}, 120)
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
bundlerDev
|
|
83
|
+
};
|