unbag
Version:
一个专门用来开发npm工具的包
79 lines • 1.91 kB
JavaScript
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 };