beesbuild
Version:
构建工具链
150 lines (149 loc) • 6.52 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, {
_rimraf: () => _rimraf,
rimraf: () => rimraf
});
module.exports = __toCommonJS(stdin_exports);
var import_path = __toESM(require("path"));
var import_chalk_unified = __toESM(require("chalk-unified"));
var import_utils = require("@beesbuild/utils");
var import_fast_glob = __toESM(require("fast-glob"));
var import_lodash_unified = require("lodash-unified");
var import_getBuildContext = require("./utils/getBuildContext.cjs");
async function _rimraf(ctx, rimrafOptions) {
var _a;
const options = ctx.options;
const rootDir = ctx.options.rootDir;
let rimraf2 = (_a = ctx.options.rimraf) != null ? _a : {};
if (!rimrafOptions) {
rimraf2 = (0, import_lodash_unified.mergeWith)({}, rimraf2, rimrafOptions != null ? rimrafOptions : {}, (value, srcValue, key) => {
if (key === "dirs") {
return (0, import_lodash_unified.uniq)((0, import_lodash_unified.flattenDeep)([srcValue, value]).filter(Boolean));
}
});
}
if (!(rimraf2 == null ? void 0 : rimraf2.dirs) || rimraf2.dirs.length === 0 || !rimraf2) return;
const excludeFiles = [];
const filter = typeof options.filter === "string" ? options.filter.replace(/^((\.?)+(\/)+)+/, "") : "";
const includeFiles = rimraf2.dirs.reduce((dirs, dir) => {
if (dir.includes(".")) return dirs;
dir = dir.replace(/(\/){1,}$/g, "");
if (/((\.){2,}|(\/){2,})/g.test(dir) || !dir) return dirs;
const exclude = `!**/node_modules/**/${dir}`;
excludeFiles.push(exclude);
if ((0, import_lodash_unified.isString)(filter)) {
dir = import_path.default.relative(options.rootDir, import_path.default.join(options.rootDir, ".", `${filter}/${dir}`));
}
return dirs.concat([dir]);
}, []);
if (options.changedFilesIgnorePattern) excludeFiles.push(options.changedFilesIgnorePattern);
const source = includeFiles.concat(excludeFiles).filter(dir => !!dir);
if (options.verbose) {
import_utils.consola.info(import_chalk_unified.default.blue(`\u76EE\u5F55\u7B5B\u9009\u6761\u4EF6\uFF1A${options.rootDir}`));
source.forEach(v => import_utils.consola.info(`> ${import_chalk_unified.default.cyan(v)}`));
}
const directories = [];
const globOptions = {
cwd: options.rootDir,
deep: 5,
absolute: true,
ignore: ["**/.git/**", "**/.svn/**", "**/.hg/**"]
};
if (rimraf2.onlyDirectories) {
directories.push(...import_fast_glob.default.sync(source, {
...globOptions,
onlyDirectories: true
}));
}
if (directories.length > 0) {
await Promise.allSettled(directories.map(dir => (0, import_utils.runSync)(`rimraf ${dir}`, {
cwd: process.cwd()
})));
if (options.verbose) {
import_utils.consola.info(import_chalk_unified.default.blue(`\u9700\u8981\u5220\u9664\u7684\u76EE\u5F55\u6570\u91CF\uFF1A${directories.length}`));
directories.forEach(dir => import_utils.consola.info(import_chalk_unified.default.cyan("> \u5220\u9664\u76EE\u5F55\uFF1A"), import_path.default.relative(options.rootDir, dir)));
}
} else {
import_utils.consola.warn(import_chalk_unified.default.cyan("\u6CA1\u6709\u9700\u8981\u5220\u9664\u7684\u76EE\u5F55"));
}
if (!rimraf2.onlyFiles) return;
const files = [];
const fileGlobOptions = {
...globOptions,
onlyFiles: true,
ignore: ["**/node_modules/**"]
};
for (const dir of rimraf2.dirs) {
const [a, ...dirs] = dir.split("/");
if (!dir.includes(".") || !/^\w+/.test(a)) continue;
const suffix = dirs.pop();
const source2 = suffix ? dirs.concat([suffix]) : dirs;
const r = filter ? `${filter}/${a}` : a;
const dirss = import_fast_glob.default.sync(r, {
...globOptions,
ignore: ["**/node_modules/**"],
deep: 5,
onlyDirectories: true
});
if (dirss.length === 0) continue;
const source22 = dirss.map(dir2 => `${import_path.default.relative(rootDir, dir2)}/${source2.join("/")}`);
if (options.verbose) {
import_utils.consola.info(import_chalk_unified.default.blue("\u6587\u4EF6\u7B5B\u9009\u6761\u4EF6\uFF1A"));
source22.forEach(v => import_utils.consola.info(`> ${import_chalk_unified.default.cyan(v)}`));
}
files.push(...import_fast_glob.default.sync(source22, fileGlobOptions));
}
if (files.length === 0) {
return import_utils.consola.warn(import_chalk_unified.default.cyan("\u6CA1\u6709\u9700\u8981\u5220\u9664\u7684\u6587\u4EF6"));
}
if (options.verbose) {
await Promise.allSettled(files.map(dir => (0, import_utils.runSync)(`rimraf ${dir}`, {
cwd: process.cwd()
})));
import_utils.consola.info(import_chalk_unified.default.blue(`\u9700\u8981\u5220\u9664\u7684\u6587\u4EF6\u6570\u91CF\uFF1A${files.length}`));
files.forEach(dir => import_utils.consola.info(import_chalk_unified.default.cyan("> \u5220\u9664\u6587\u4EF6\uFF1A"), import_path.default.relative(rootDir, dir)));
}
}
async function rimraf(options) {
const ctx = await (0, import_getBuildContext.getBuildContext)(options);
await _rimraf(ctx, options);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
_rimraf,
rimraf
});