add bundler exclusions
This commit is contained in:
parent
38a6ef8f03
commit
86ea2fe10f
2 changed files with 21 additions and 10 deletions
|
|
@ -1,11 +1,16 @@
|
||||||
{
|
{
|
||||||
|
"compress": false,
|
||||||
"outputs": {
|
"outputs": {
|
||||||
"bundle": "./web/boot/bundle.bin"
|
"bundle": "./web/boot/bundle.bin"
|
||||||
},
|
},
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{ "root": "./web", "prefix": "" },
|
{ "root": "web", "prefix": "" },
|
||||||
{ "root": "./src", "prefix": "lib" },
|
{ "root": "src", "prefix": "lib" },
|
||||||
{ "root": "./src/wasm", "prefix": "wasm" },
|
{ "root": "src/wasm", "prefix": "wasm" },
|
||||||
{ "root": "./src/wasm", "prefix": "lib/kiri/wasm" }
|
{ "root": "src/wasm", "prefix": "lib/kiri/wasm" }
|
||||||
|
],
|
||||||
|
"excludes": [
|
||||||
|
"src/pack",
|
||||||
|
"web/boot/bundle.bin"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,16 @@ import uglify from 'uglify-js';
|
||||||
import { Buffer } from 'buffer';
|
import { Buffer } from 'buffer';
|
||||||
|
|
||||||
const cfg = JSON.parse(fs.readFileSync(process.argv[2] || './bin/bundle.config.json', 'utf8'));
|
const cfg = JSON.parse(fs.readFileSync(process.argv[2] || './bin/bundle.config.json', 'utf8'));
|
||||||
const compress = process.env.UGLIFY ? true : false
|
const { inputs, outputs, excludes, compress } = cfg;
|
||||||
|
const envcomp = process.env.UGLIFY ? JSON.parse(process.env.UGLIFY) : undefined;
|
||||||
|
|
||||||
// --- recursive directory walker (follows symlinks safely) ---
|
// --- recursive directory walker (follows symlinks safely) ---
|
||||||
function* walk(dir, seen = new Set()) {
|
function* walk(dir, seen = new Set()) {
|
||||||
|
dir = path.normalize(dir);
|
||||||
|
if (excludes.indexOf(dir) >= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const real = fs.realpathSync(dir);
|
const real = fs.realpathSync(dir);
|
||||||
if (seen.has(real)) {
|
if (seen.has(real)) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -25,7 +31,7 @@ function* walk(dir, seen = new Set()) {
|
||||||
|
|
||||||
// --- collect all files according to config ---
|
// --- collect all files according to config ---
|
||||||
let entries = [];
|
let entries = [];
|
||||||
for (const input of cfg.inputs) {
|
for (const input of inputs) {
|
||||||
const root = input.root;
|
const root = input.root;
|
||||||
const prefix = input.prefix || '';
|
const prefix = input.prefix || '';
|
||||||
for (const file of walk(root)) {
|
for (const file of walk(root)) {
|
||||||
|
|
@ -42,16 +48,16 @@ let offset = 0;
|
||||||
let cache = new Map();
|
let cache = new Map();
|
||||||
|
|
||||||
for (const { file, virt } of entries) {
|
for (const { file, virt } of entries) {
|
||||||
if (file.endsWith('/bundle.bin')) {
|
if (excludes.indexOf(file) >= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let record = cache.get(file);
|
let record = cache.get(file);
|
||||||
if (record) {
|
if (record) {
|
||||||
// console.log({ dup: file });
|
// console.log({ alias: file, to: record.virt });
|
||||||
entryMeta.push({ ...record, virt });
|
entryMeta.push({ ...record, virt });
|
||||||
} else {
|
} else {
|
||||||
let data = fs.readFileSync(file);
|
let data = fs.readFileSync(file);
|
||||||
if (compress && file.endsWith("js")) {
|
if ((envcomp ?? compress) && file.endsWith("js")) {
|
||||||
console.log('compress', file);
|
console.log('compress', file);
|
||||||
data = uglify.minify(data.toString(), {
|
data = uglify.minify(data.toString(), {
|
||||||
compress: {
|
compress: {
|
||||||
|
|
@ -102,7 +108,7 @@ const header = Buffer.concat([count, ...headerParts]);
|
||||||
const full = Buffer.concat([header, ...dataParts]);
|
const full = Buffer.concat([header, ...dataParts]);
|
||||||
|
|
||||||
// --- write final bundle ---
|
// --- write final bundle ---
|
||||||
const outPath = cfg.outputs.bundle || './bundle.bin';
|
const outPath = outputs.bundle || './bundle.bin';
|
||||||
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
||||||
fs.writeFileSync(outPath, full); // ⚡ write raw binary
|
fs.writeFileSync(outPath, full); // ⚡ write raw binary
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue