@rnm/tscx
Version:
A tsc wrapper with many convenient features.
35 lines • 5.26 kB
JavaScript
import fs from "node:fs/promises";
import path from "node:path";
/**
* Copy non-ts/non-js files to outDir
* @param rootDirectory absolute path
* @param outDirectory absolute path
*/
export async function copyfiles(rootDirectory, outDirectory) {
const rootDir = path.resolve(rootDirectory);
const outDir = path.resolve(outDirectory);
const walkDir = async (dir, cb) => {
await Promise.all((await fs.readdir(dir))
.map((filepath) => path.resolve(dir, filepath))
.map(async (filepath) => {
const stat = await fs.stat(filepath);
if (stat.isFile() &&
!/\.(js|cjs|mjs|jsx|ts|cts|mts|tsx)$/.test(filepath)) {
await cb(filepath);
}
if (stat.isDirectory() &&
!filepath.startsWith(outDir) &&
!filepath.endsWith(`${path.sep}node_modules`) &&
!filepath.endsWith(`${path.sep}.git`)) {
await walkDir(filepath, cb);
}
}));
};
await walkDir(rootDir, async (filepath) => {
const dest = filepath.replace(rootDir, outDir);
console.log("Copy", filepath, "=>", dest);
await fs.mkdir(path.dirname(dest), { recursive: true });
await fs.copyFile(filepath, dest);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weWZpbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NtZC9jb3B5ZmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQ25CLEdBQVcsRUFDWCxFQUF1QyxFQUN2QyxFQUFFO1FBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDOUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckMsSUFDRSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNiLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUNwRCxDQUFDO2dCQUNELE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUNFLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQztnQkFDN0MsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQ3JDLENBQUM7Z0JBQ0QsTUFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBQ0YsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUN4QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuLyoqXG4gKiBDb3B5IG5vbi10cy9ub24tanMgZmlsZXMgdG8gb3V0RGlyXG4gKiBAcGFyYW0gcm9vdERpcmVjdG9yeSBhYnNvbHV0ZSBwYXRoXG4gKiBAcGFyYW0gb3V0RGlyZWN0b3J5IGFic29sdXRlIHBhdGhcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlmaWxlcyhyb290RGlyZWN0b3J5OiBzdHJpbmcsIG91dERpcmVjdG9yeTogc3RyaW5nKSB7XG4gIGNvbnN0IHJvb3REaXIgPSBwYXRoLnJlc29sdmUocm9vdERpcmVjdG9yeSk7XG4gIGNvbnN0IG91dERpciA9IHBhdGgucmVzb2x2ZShvdXREaXJlY3RvcnkpO1xuICBjb25zdCB3YWxrRGlyID0gYXN5bmMgKFxuICAgIGRpcjogc3RyaW5nLFxuICAgIGNiOiAoZmlsZXBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPixcbiAgKSA9PiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAoYXdhaXQgZnMucmVhZGRpcihkaXIpKVxuICAgICAgICAubWFwKChmaWxlcGF0aCkgPT4gcGF0aC5yZXNvbHZlKGRpciwgZmlsZXBhdGgpKVxuICAgICAgICAubWFwKGFzeW5jIChmaWxlcGF0aCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBmcy5zdGF0KGZpbGVwYXRoKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzdGF0LmlzRmlsZSgpICYmXG4gICAgICAgICAgICAhL1xcLihqc3xjanN8bWpzfGpzeHx0c3xjdHN8bXRzfHRzeCkkLy50ZXN0KGZpbGVwYXRoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgYXdhaXQgY2IoZmlsZXBhdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzdGF0LmlzRGlyZWN0b3J5KCkgJiZcbiAgICAgICAgICAgICFmaWxlcGF0aC5zdGFydHNXaXRoKG91dERpcikgJiZcbiAgICAgICAgICAgICFmaWxlcGF0aC5lbmRzV2l0aChgJHtwYXRoLnNlcH1ub2RlX21vZHVsZXNgKSAmJlxuICAgICAgICAgICAgIWZpbGVwYXRoLmVuZHNXaXRoKGAke3BhdGguc2VwfS5naXRgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgYXdhaXQgd2Fsa0RpcihmaWxlcGF0aCwgY2IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgKTtcbiAgfTtcbiAgYXdhaXQgd2Fsa0Rpcihyb290RGlyLCBhc3luYyAoZmlsZXBhdGgpID0+IHtcbiAgICBjb25zdCBkZXN0ID0gZmlsZXBhdGgucmVwbGFjZShyb290RGlyLCBvdXREaXIpO1xuICAgIGNvbnNvbGUubG9nKFwiQ29weVwiLCBmaWxlcGF0aCwgXCI9PlwiLCBkZXN0KTtcbiAgICBhd2FpdCBmcy5ta2RpcihwYXRoLmRpcm5hbWUoZGVzdCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGF3YWl0IGZzLmNvcHlGaWxlKGZpbGVwYXRoLCBkZXN0KTtcbiAgfSk7XG59XG4iXX0=