UNPKG

unbag

Version:

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

184 lines (183 loc) 4.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTransformActionHelper = exports.defineTransformActionTask = exports.TransformActionTaskOutFileType = void 0; var _path = require("./../../../utils/path.cjs"); var _utils = require("../utils.cjs"); var _process = require("./process.cjs"); var _fs = require("./../../../utils/fs.cjs"); var _esbuild = require("./tasks/esbuild.cjs"); var _alias = require("./tasks/alias.cjs"); var _babel = require("./tasks/babel.cjs"); var _common = require("./../../../utils/common.cjs"); var _dts = require("./tasks/dts.cjs"); var TransformActionTaskOutFileType = exports.TransformActionTaskOutFileType = /* @__PURE__ */(TransformActionTaskOutFileType2 => { TransformActionTaskOutFileType2["Transformed"] = "Transformed"; TransformActionTaskOutFileType2["Copy"] = "Copy"; TransformActionTaskOutFileType2["Ignored"] = "Ignored"; return TransformActionTaskOutFileType2; })(TransformActionTaskOutFileType || {}); const defineTransformActionTask = task => task; exports.defineTransformActionTask = defineTransformActionTask; const useTransformActionHelper = params => { const { finalUserConfig } = params; const entryDir = (0, _utils.useTransformEntry)({ finalUserConfig }); const fs = (0, _fs.useFs)(); const path = (0, _path.usePath)(); const { createProcess, getProcess } = (0, _process.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 (0, _utils.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: (0, _esbuild.TransformActionTaskEsbuild)(options), parentUid }); }; const babel = async params2 => { const { name, options, parentUid } = params2; return await custom({ name, task: (0, _babel.TransformActionTaskBabel)(options), parentUid }); }; const alias = async params2 => { const { name, options, parentUid } = params2; return await custom({ name, task: (0, _alias.TransformActionTaskAlias)(options), parentUid }); }; const dts = async params2 => { const { name, options, parentUid } = params2; return await custom({ name, task: (0, _dts.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 = (0, _common.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 }; }; exports.useTransformActionHelper = useTransformActionHelper;