UNPKG

unbag

Version:

一个专门用来开发npm工具的包

177 lines 4.55 kB
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 };