UNPKG

unbag

Version:

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

79 lines 1.91 kB
import { filterNullable, useRoot } from "./../../utils/common.mjs"; import { v4 as uuidv4 } from "uuid"; import { AbsolutePath } from "./../../utils/path.mjs"; import { useFs } from "./../../utils/fs.mjs"; const useTransformTempDir = params => { const { finalUserConfig } = params; const { tempDir } = finalUserConfig; const rootPath = useRoot({ finalUserConfig }); const transformTempDir = rootPath.resolve({ next: tempDir }).resolve({ next: "./transform" }); return transformTempDir; }; const useTransformTaskTempDir = params => { const { finalUserConfig } = params; const transformTempDir = useTransformTempDir({ finalUserConfig }); const transformTaskTempDir = transformTempDir.resolve({ next: `./task_${uuidv4()}` }); return transformTaskTempDir; }; const useTransformEntry = params => { const { finalUserConfig } = params; const { transform } = finalUserConfig; const { entry } = transform; const rootPath = useRoot({ finalUserConfig }); return rootPath.resolve({ next: entry }); }; const useTransformFiles = async params => { const { finalUserConfig, inputDir } = params; const fs = useFs(); const inputFilePaths = (await fs.listFiles(inputDir.content)).map(e => { return new AbsolutePath({ content: e }); }).map(e => { return e.toRelativePath({ rel: inputDir }); }); const inputFilePathsFiltered = filterNullable(await Promise.all(inputFilePaths.map(async filePath => { const matched = await finalUserConfig.transform.match({ filePath, inputDir, finalUserConfig }); if (matched) { return filePath; } }))); return [...inputFilePathsFiltered]; }; const defineTransformTask = task => task; export { defineTransformTask, useTransformEntry, useTransformFiles, useTransformTaskTempDir, useTransformTempDir };