From 3b144b7dc14d555debfac8988a255dabf25b4746 Mon Sep 17 00:00:00 2001 From: EGOIST <0x142857@gmail.com> Date: Fri, 15 May 2020 22:25:28 +0800 Subject: [PATCH] feat: remove fs-extra --- package.json | 5 ++++- src/index.ts | 19 +++++++++++++------ yarn.lock | 29 ++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 1d8f8ec..0e1bcec 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,9 @@ "devDependencies": { "@types/fs-extra": "^8.0.1", "@types/jest": "^24.0.23", + "@types/mkdirp": "^1.0.0", "@types/node": "^12.12.7", + "@types/rimraf": "^3.0.0", "husky": "^3.0.9", "jest": "^24.9.0", "lint-staged": "^9.4.3", @@ -48,6 +50,7 @@ }, "dependencies": { "fast-glob": "^3.1.0", - "fs-extra": "^8.1.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" } } diff --git a/src/index.ts b/src/index.ts index 37e1ad9..486854d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,10 +1,17 @@ import path from 'path' -import fs from 'fs-extra' +import fs from 'fs' +import { promisify } from 'util' import glob from 'fast-glob' +import rimraf from 'rimraf' +import mkdirp from 'mkdirp' import Wares from './wares' export type Middleware = (ctx: Majo) => Promise | void +const readFile = promisify(fs.readFile) +const writeFile = promisify(fs.writeFile) +const remove = promisify(rimraf) + export interface File { /** The absolute path of the file */ path: string @@ -113,7 +120,7 @@ export class Majo { await Promise.all( allEntries.map(entry => { const absolutePath = path.resolve(this.baseDir as string, entry.path) - return fs.readFile(absolutePath).then(contents => { + return readFile(absolutePath).then(contents => { const file = { contents, stats: entry.stats as fs.Stats, @@ -168,7 +175,7 @@ export class Majo { await this.process() if (clean) { - await fs.remove(destPath) + await remove(destPath) } await Promise.all( @@ -178,9 +185,9 @@ export class Majo { if (this.onWrite) { this.onWrite(filename, target) } - return fs - .ensureDir(path.dirname(target)) - .then(() => fs.writeFile(target, contents)) + return mkdirp(path.dirname(target)).then(() => + writeFile(target, contents) + ) }) ) diff --git a/yarn.lock b/yarn.lock index 02c8598..8be8a84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -443,7 +443,7 @@ dependencies: "@types/node" "*" -"@types/glob@^7.1.1": +"@types/glob@*", "@types/glob@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== @@ -484,6 +484,13 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/mkdirp@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.0.tgz#16ce0eabe4a9a3afe64557ad0ee6886ec3d32927" + integrity sha512-ONFY9//bCEr3DWKON3iDv/Q8LXnhaYYaNDeFSN0AtO5o4sLf9F0pstJKKKjQhXE0kJEeHs8eR6SAsROhhc2Csw== + dependencies: + "@types/node" "*" + "@types/node@*": version "10.12.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.2.tgz#d77f9faa027cadad9c912cd47f4f8b07b0fb0864" @@ -499,6 +506,14 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/rimraf@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.0.tgz#b9d03f090ece263671898d57bb7bb007023ac19f" + integrity sha512-7WhJ0MdpFgYQPXlF4Dx+DhgvlPCfz/x5mHaeDQAKhcenvQP1KCpLQ18JklAqeGMYSAT2PxLpzd0g2/HE7fj7hQ== + dependencies: + "@types/glob" "*" + "@types/node" "*" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -3053,6 +3068,11 @@ mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "0.0.8" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3816,6 +3836,13 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rollup-plugin-typescript2@^0.25.2: version "0.25.2" resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.2.tgz#1a165df08560902da45b355413464caca1765d3a"