UNPKG

@jambdev/tsc-hooks

Version:

Add tsc compiler hooks to your TypeScript project

36 lines (31 loc) 1.35 kB
const glob = require('glob'); const globParent = require('glob-parent'); const path = require('path'); const fs = require('fs'); module.exports = (tsconfig, tsconfigPath) => { process.on('exit', () => { const tsconfigDir = path.dirname(tsconfigPath); const include = tsconfig.include?.map(file => path.resolve(tsconfigDir, file)); const ignore = tsconfig.exclude?.map(file => path.resolve(tsconfigDir, file)); const outDir = tsconfig.compilerOptions.outDir; for (let includePattern of include) { const files = glob.sync(includePattern, { ignore }); const includeDir = globParent(includePattern); for(const file of files) { if ((file.endsWith('.js') && !tsconfig.allowJs) || file.endsWith('.ts')) continue; const relative = file.slice(includeDir.length); const target = path.join(outDir, relative); if (!fs.existsSync(path.dirname(target))) { fs.mkdirSync(path.dirname(target), { recursive: true }); } if (fs.lstatSync(file).isDirectory() && !fs.existsSync(target)) { fs.mkdirSync(target, { recursive: true }); } if (fs.lstatSync(file).isFile()) { const fileContent = fs.readFileSync(file); fs.writeFileSync(target, fileContent); } } } }); };