UNPKG

beesbuild

Version:

构建工具链

115 lines (114 loc) 3.51 kB
"use strict"; 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 });