unbag
Version:
一个专门用来开发npm工具的包
177 lines • 4.55 kB
JavaScript
import { usePath } from "./../../../utils/path.mjs";
import { useTransformEntry, useTransformFiles } from "../utils.mjs";
import { useTransformActionProcessMap } from "./process.mjs";
import { useFs } from "./../../../utils/fs.mjs";
import { TransformActionTaskEsbuild } from "./tasks/esbuild.mjs";
import { TransformActionTaskAlias } from "./tasks/alias.mjs";
import { TransformActionTaskBabel } from "./tasks/babel.mjs";
import { useRoot } from "./../../../utils/common.mjs";
import { TransformActionTaskDts } from "./tasks/dts.mjs";
var TransformActionTaskOutFileType = /* @__PURE__ */(TransformActionTaskOutFileType2 => {
TransformActionTaskOutFileType2["Transformed"] = "Transformed";
TransformActionTaskOutFileType2["Copy"] = "Copy";
TransformActionTaskOutFileType2["Ignored"] = "Ignored";
return TransformActionTaskOutFileType2;
})(TransformActionTaskOutFileType || {});
const defineTransformActionTask = task => task;
const useTransformActionHelper = params => {
const {
finalUserConfig
} = params;
const entryDir = useTransformEntry({
finalUserConfig
});
const fs = useFs();
const path = usePath();
const {
createProcess,
getProcess
} = useTransformActionProcessMap({
finalUserConfig
});
const custom = async params2 => {
const {
name,
task,
parentUid
} = params2;
const uid = await createProcess({
name,
task: async ({
tempDir
}) => {
const inputDir = parentUid ? getProcess({
uid: parentUid
}).tempDir : entryDir;
const filePaths = await useTransformFiles({
finalUserConfig,
inputDir
});
const result = await task({
tempDir,
inputDir,
filePaths,
finalUserConfig
});
await fs.ensureDir(tempDir.content);
await Promise.all(result.map(async file => {
if (!file) {
return;
}
if (file.type === "Ignored" /* Ignored */) {
return;
}
if (file.type === "Copy" /* Copy */) {
await fs.copy(path.resolve(inputDir.content, file.from.content), path.resolve(tempDir.content, file.to.content));
}
if (file.type === "Transformed" /* Transformed */) {
await fs.outputFile(path.resolve(tempDir.content, file.to.content), file.content);
}
}));
}
});
return uid;
};
const esbuild = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: TransformActionTaskEsbuild(options),
parentUid
});
};
const babel = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: TransformActionTaskBabel(options),
parentUid
});
};
const alias = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: TransformActionTaskAlias(options),
parentUid
});
};
const dts = async params2 => {
const {
name,
options,
parentUid
} = params2;
return await custom({
name,
task: TransformActionTaskDts(options),
parentUid
});
};
const merge = async params2 => {
const {
name,
processUidList
} = params2;
const uid = await createProcess({
name,
task: async ({
tempDir
}) => {
const inputDirList = processUidList.map(uid2 => getProcess({
uid: uid2
}).tempDir);
for (const inputDir of inputDirList) {
await fs.copy(inputDir.content, tempDir.content);
}
}
});
return uid;
};
const out = async params2 => {
const {
output,
processUid
} = params2;
const parentProcess = getProcess({
uid: processUid
});
const rootPath = useRoot({
finalUserConfig
});
const outputDir = rootPath.resolve({
next: output
});
const name = `out-${parentProcess.name}`;
const uid = await createProcess({
name,
task: async () => {
await fs.emptyDir(outputDir.content);
await fs.copy(parentProcess.tempDir.content, outputDir.content);
}
});
return uid;
};
return {
custom,
merge,
esbuild,
alias,
babel,
out,
dts
};
};
export { TransformActionTaskOutFileType, defineTransformActionTask, useTransformActionHelper };