beesbuild
Version:
构建工具链
115 lines (114 loc) • 3.51 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
value: true
}), mod);
var stdin_exports = {};
__export(stdin_exports, {
getShebang: () => getShebang,
makeExecutable: () => makeExecutable,
shebangPlugin: () => shebangPlugin
});
module.exports = __toCommonJS(stdin_exports);
var import_node_fs = require("node:fs");
var import_magic_string = __toESM(require("magic-string"));
var import_pathe = require("pathe");
const SHEBANG_RE = /^#![^\n]*/;
function shebangPlugin(options = {}) {
const shebangs = /* @__PURE__ */new Map();
return {
name: "cli-shebang",
// @ts-ignore temp workaround
_options: options,
transform(code, mod) {
let shebang;
code = code.replace(SHEBANG_RE, match => {
shebang = match;
return "";
});
if (!shebang) {
return null;
}
shebangs.set(mod, shebang);
return {
code,
map: null
};
},
renderChunk(code, chunk, {
sourcemap
}) {
if (options.preserve === false) {
return null;
}
const shebang = shebangs.get(chunk.facadeModuleId);
if (!shebang) {
return null;
}
const s = new import_magic_string.default(code);
s.prepend(`${shebang}
`);
return {
code: s.toString(),
map: sourcemap ? s.generateMap({
hires: true
}) : null
};
},
async writeBundle(options2, bundle) {
var _a;
for (const [fileName, output] of Object.entries(bundle)) {
if (output.type !== "chunk") {
continue;
}
if ((_a = output.code) == null ? void 0 : _a.match(SHEBANG_RE)) {
const outFile = (0, import_pathe.resolve)(options2.dir, fileName);
await makeExecutable(outFile);
}
}
}
};
}
async function makeExecutable(filePath) {
await import_node_fs.promises.chmod(filePath, 493
/* rwx r-x r-x */).catch(() => {});
}
function getShebang(code, append = "\n") {
const m = code.match(SHEBANG_RE);
return m ? m + append : "";
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getShebang,
makeExecutable,
shebangPlugin
});