diff --git a/src/index.ts b/src/index.ts index 486854d..d3c8fe8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,7 +3,7 @@ import fs from 'fs' import { promisify } from 'util' import glob from 'fast-glob' import rimraf from 'rimraf' -import mkdirp from 'mkdirp' +import ensureDir from 'mkdirp' import Wares from './wares' export type Middleware = (ctx: Majo) => Promise | void @@ -185,7 +185,7 @@ export class Majo { if (this.onWrite) { this.onWrite(filename, target) } - return mkdirp(path.dirname(target)).then(() => + return ensureDir(path.dirname(target)).then(() => writeFile(target, contents) ) }) @@ -271,4 +271,16 @@ export class Majo { const majo = () => new Majo() -export { majo, fs, glob } +export { majo, remove, glob, ensureDir } + +/** + * Ensure directory exists before writing file + */ +export const outputFile = ( + filepath: string, + data: any, + options?: fs.WriteFileOptions +) => + ensureDir(path.dirname(filepath)).then(() => + writeFile(filepath, data, options) + ) diff --git a/test/index.test.ts b/test/index.test.ts index 2fce5b0..680e70b 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -1,9 +1,9 @@ import path from 'path' -import { majo, fs, glob } from '../src' +import { majo, glob, remove } from '../src' test('main', async () => { const outputDir = path.join(__dirname, 'output/main') - await fs.remove(outputDir) + await remove(outputDir) const stream = await majo() .source('**', { baseDir: path.join(__dirname, 'fixture/source') }) .dest('./output/main', { baseDir: __dirname })