unbag
Version:
一个专门用来开发npm工具的包
42 lines • 1.35 kB
JavaScript
import { transform } from "esbuild";
import { useFs } from "./../../../../utils/fs.mjs";
import { defineTransformActionTask, TransformActionTaskOutFileType } from "../index.mjs";
const TransformActionTaskEsbuild = options => {
const {
esbuild: esbuildOptions,
extMapping
} = options;
return defineTransformActionTask(async params => {
const {
inputDir,
filePaths
} = params;
const matchedExtnames = Object.keys(extMapping);
const filePathsFiltered = filePaths.filter(filePath => {
if (matchedExtnames.includes(filePath.extname)) {
return true;
}
return false;
});
const outputFiles = await Promise.all(filePathsFiltered.map(async filePath => {
const absoluteFilePath = filePath.toAbsolutePath({
rel: inputDir
});
const fs = useFs();
const content = await fs.readFile(absoluteFilePath.content, "utf-8");
const jsFile = await transform(content, {
...esbuildOptions
});
const targetExtName = extMapping[filePath.extname];
return {
from: filePath,
to: filePath.replaceExtname(targetExtName),
type: TransformActionTaskOutFileType.Transformed,
content: jsFile.code,
sourcemap: jsFile.map
};
}));
return outputFiles;
});
};
export { TransformActionTaskEsbuild };