Skip to content

Commit 0f73a91

Browse files
committed
refactor: use fs-extra
1 parent 2222808 commit 0f73a91

File tree

13 files changed

+51
-61
lines changed

13 files changed

+51
-61
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"puppeteer": "^1.0.0",
5656
"request": "^2.83.0",
5757
"request-promise-native": "^1.0.5",
58+
"rimraf": "^2.6.2",
5859
"yorkie": "^1.0.2"
5960
}
6061
}

packages/@vue/cli-service-global/__tests__/globalService.spec.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
jest.setTimeout(40000)
22

3-
const fs = require('fs')
3+
const fs = require('fs-extra')
44
const path = require('path')
55
const portfinder = require('portfinder')
66
const { createServer } = require('http-server')
7-
const mkdirp = require('mkdirp')
87
const execa = require('execa')
98
const serve = require('@vue/cli-test-utils/serveWithPuppeteer')
109
const launchPuppeteer = require('@vue/cli-test-utils/launchPuppeteer')
1110

1211
const cwd = path.resolve(__dirname, 'temp')
1312
const binPath = require.resolve('@vue/cli/bin/vue')
1413
const sleep = n => new Promise(resolve => setTimeout(resolve, n))
15-
const write = (file, content) => fs.writeFileSync(path.join(cwd, file), content)
14+
const write = (file, content) => fs.writeFile(path.join(cwd, file), content)
1615

1716
const entryVue = fs.readFileSync(path.resolve(__dirname, 'entry.vue'), 'utf-8')
1817

@@ -23,11 +22,11 @@ import App from './Other.vue'
2322
new Vue({ render: h => h(App) }).$mount('#app')
2423
`.trim()
2524

26-
beforeAll(() => {
27-
mkdirp.sync(cwd)
28-
write('App.vue', entryVue)
29-
write('Other.vue', entryVue)
30-
write('foo.js', entryJs)
25+
beforeAll(async () => {
26+
await fs.ensureDir(cwd)
27+
await write('App.vue', entryVue)
28+
await write('Other.vue', entryVue)
29+
await write('foo.js', entryJs)
3130
})
3231

3332
test('global serve', async () => {

packages/@vue/cli-service-global/__tests__/globalServiceBuildLib.spec.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
jest.setTimeout(20000)
22

3-
const fs = require('fs')
3+
const fs = require('fs-extra')
44
const path = require('path')
55
const portfinder = require('portfinder')
66
const { createServer } = require('http-server')
7-
const mkdirp = require('mkdirp')
87
const execa = require('execa')
98
const launchPuppeteer = require('@vue/cli-test-utils/launchPuppeteer')
109

1110
const cwd = path.resolve(__dirname, 'temp')
1211
const binPath = require.resolve('@vue/cli/bin/vue')
13-
const write = (file, content) => fs.writeFileSync(path.join(cwd, file), content)
12+
const write = (file, content) => fs.writeFile(path.join(cwd, file), content)
1413

1514
const entryVue = fs.readFileSync(path.resolve(__dirname, 'entry.vue'), 'utf-8')
1615

17-
beforeAll(() => {
18-
mkdirp.sync(cwd)
19-
write('testLib.vue', entryVue)
16+
beforeAll(async () => {
17+
await fs.ensureDir(cwd)
18+
await write('testLib.vue', entryVue)
2019
})
2120

2221
let server, browser, page

packages/@vue/cli-service-global/__tests__/globalServiceBuildWc.spec.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
jest.setTimeout(20000)
22

3-
const fs = require('fs')
3+
const fs = require('fs-extra')
44
const path = require('path')
55
const portfinder = require('portfinder')
66
const { createServer } = require('http-server')
7-
const mkdirp = require('mkdirp')
87
const execa = require('execa')
98
const launchPuppeteer = require('@vue/cli-test-utils/launchPuppeteer')
109

1110
const cwd = path.resolve(__dirname, 'temp')
1211
const binPath = require.resolve('@vue/cli/bin/vue')
13-
const write = (file, content) => fs.writeFileSync(path.join(cwd, file), content)
12+
const write = (file, content) => fs.writeFile(path.join(cwd, file), content)
1413

1514
const entryVue = fs.readFileSync(path.resolve(__dirname, 'entry.vue'), 'utf-8')
1615

17-
beforeAll(() => {
18-
mkdirp.sync(cwd)
19-
write('my-wc.vue', entryVue)
16+
beforeAll(async () => {
17+
await fs.ensureDir(cwd)
18+
await write('my-wc.vue', entryVue)
2019
})
2120

2221
let server, browser, page

packages/@vue/cli-service/lib/commands/build/index.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,9 @@ module.exports = (api, options) => {
3030

3131
api.setMode(args.mode)
3232

33-
const fs = require('fs')
33+
const fs = require('fs-extra')
3434
const path = require('path')
3535
const chalk = require('chalk')
36-
const rimraf = require('rimraf')
3736
const webpack = require('webpack')
3837
const formatStats = require('./formatStats')
3938
const {
@@ -124,7 +123,7 @@ module.exports = (api, options) => {
124123
}
125124

126125
return new Promise((resolve, reject) => {
127-
rimraf(targetDir, err => {
126+
fs.remove(targetDir, err => {
128127
if (err) {
129128
return reject(err)
130129
}

packages/@vue/cli-service/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"extract-text-webpack-plugin": "^3.0.2",
3838
"file-loader": "^1.1.11",
3939
"friendly-errors-webpack-plugin": "^1.6.1",
40+
"fs-extra": "^5.0.0",
4041
"get-value": "^3.0.1",
4142
"globby": "^8.0.1",
4243
"html-webpack-plugin": "^3.2.0",
@@ -49,7 +50,6 @@
4950
"portfinder": "^1.0.13",
5051
"postcss-loader": "^2.1.1",
5152
"read-pkg": "^3.0.0",
52-
"rimraf": "^2.6.2",
5353
"semver": "^5.5.0",
5454
"slash": "^2.0.0",
5555
"source-map-url": "^0.4.0",

packages/@vue/cli-test-utils/createTestProject.js

+4-9
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
1-
const fs = require('fs')
1+
const fs = require('fs-extra')
22
const path = require('path')
33
const execa = require('execa')
4-
const { promisify } = require('util')
5-
const readFile = promisify(fs.readFile)
6-
const writeFile = promisify(fs.writeFile)
7-
const rmFile = promisify(fs.unlink)
8-
const mkdirp = promisify(require('mkdirp'))
94

105
module.exports = function createTestProject (name, preset, cwd, initGit) {
116
cwd = cwd || path.resolve(__dirname, '../../test')
127

138
const projectRoot = path.resolve(cwd, name)
149

1510
const read = file => {
16-
return readFile(path.resolve(projectRoot, file), 'utf-8')
11+
return fs.readFile(path.resolve(projectRoot, file), 'utf-8')
1712
}
1813

1914
const has = file => {
@@ -23,11 +18,11 @@ module.exports = function createTestProject (name, preset, cwd, initGit) {
2318
const write = (file, content) => {
2419
const targetPath = path.resolve(projectRoot, file)
2520
const dir = path.dirname(targetPath)
26-
return mkdirp(dir).then(() => writeFile(targetPath, content))
21+
return fs.ensureDir(dir).then(() => fs.writeFile(targetPath, content))
2722
}
2823

2924
const rm = file => {
30-
return rmFile(path.resolve(projectRoot, file))
25+
return fs.remove(path.resolve(projectRoot, file))
3126
}
3227

3328
const run = (command, args) => {

packages/@vue/cli/__tests__/Generator.spec.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
jest.mock('fs')
22

3-
const fs = require('fs')
3+
const fs = require('fs-extra')
44
const path = require('path')
55
const Generator = require('../lib/Generator')
66
const { logs } = require('@vue/cli-shared-utils')
77
const stringifyJS = require('javascript-stringify')
88

99
// prepare template fixtures
10-
const mkdirp = require('mkdirp')
1110
const templateDir = path.resolve(__dirname, 'template')
12-
mkdirp.sync(templateDir)
11+
fs.ensureDirSync(templateDir)
1312
fs.writeFileSync(path.resolve(templateDir, 'foo.js'), 'foo(<%- options.n %>)')
14-
mkdirp.sync(path.resolve(templateDir, 'bar'))
13+
fs.ensureDirSync(path.resolve(templateDir, 'bar'))
1514
fs.writeFileSync(path.resolve(templateDir, 'bar/bar.js'), 'bar(<%- m %>)')
1615

1716
fs.writeFileSync(path.resolve(templateDir, 'replace.js'), `

packages/@vue/cli/lib/create.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
const fs = require('fs')
1+
const fs = require('fs-extra')
22
const path = require('path')
33
const chalk = require('chalk')
4-
const rimraf = require('rimraf')
54
const inquirer = require('inquirer')
65
const Creator = require('./Creator')
76
const clearConsole = require('./util/clearConsole')
@@ -28,7 +27,7 @@ async function create (projectName, options) {
2827

2928
if (fs.existsSync(targetDir)) {
3029
if (options.force) {
31-
rimraf.sync(targetDir)
30+
await fs.remove(targetDir)
3231
} else {
3332
await clearConsole()
3433
if (inCurrent) {
@@ -58,7 +57,7 @@ async function create (projectName, options) {
5857
if (!action) {
5958
return
6059
} else if (action === 'overwrite') {
61-
rimraf.sync(targetDir)
60+
await fs.remove(targetDir)
6261
}
6362
}
6463
}

packages/@vue/cli/lib/util/linkBin.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
// cross-platform executable link, mostly for Windows
22

3-
const fs = require('fs')
3+
const fs = require('fs-extra')
44
const path = require('path')
55
const { promisify } = require('util')
6-
7-
const chmod = promisify(fs.chmod)
8-
const symlink = promisify(fs.symlink)
9-
const mkdirp = promisify(require('mkdirp'))
106
const cmdShim = promisify(require('cmd-shim'))
117

128
exports.linkBin = async (src, dest) => {
@@ -18,8 +14,8 @@ exports.linkBin = async (src, dest) => {
1814
// src will not be modified
1915
await cmdShim(src, dest)
2016
} else {
21-
await mkdirp(path.dirname(dest))
22-
await symlink(src, dest)
23-
await chmod(dest, '755')
17+
await fs.ensureDir(path.dirname(dest))
18+
await fs.symlink(src, dest)
19+
await fs.chmod(dest, '755')
2420
}
2521
}
+7-10
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
1-
const fs = require('fs')
1+
const fs = require('fs-extra')
22
const path = require('path')
3-
const { promisify } = require('util')
4-
const unlink = promisify(fs.unlink)
5-
const mkdirp = promisify(require('mkdirp'))
6-
const write = promisify(fs.writeFile)
73

8-
async function deleteRemovedFiles (directory, newFiles, previousFiles) {
4+
function deleteRemovedFiles (directory, newFiles, previousFiles) {
95
// get all files that are not in the new filesystem and are still existing
106
const filesToDelete = Object.keys(previousFiles)
117
.filter(filename => !newFiles[filename])
128

139
// delete each of these files
14-
const unlinkPromises = filesToDelete.map(filename => unlink(path.join(directory, filename)))
15-
return Promise.all(unlinkPromises)
10+
return Promise.all(filesToDelete.map(filename => {
11+
return fs.unlink(path.join(directory, filename))
12+
}))
1613
}
1714

1815
module.exports = async function writeFileTree (dir, files, previousFiles) {
@@ -24,7 +21,7 @@ module.exports = async function writeFileTree (dir, files, previousFiles) {
2421
}
2522
return Promise.all(Object.keys(files).map(async (name) => {
2623
const filePath = path.join(dir, name)
27-
await mkdirp(path.dirname(filePath))
28-
await write(filePath, files[name])
24+
await fs.ensureDir(path.dirname(filePath))
25+
await fs.writeFile(filePath, files[name])
2926
}))
3027
}

packages/@vue/cli/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"download-git-repo": "^1.0.2",
3636
"ejs": "^2.5.7",
3737
"execa": "^0.8.0",
38+
"fs-extra": "^5.0.0",
3839
"globby": "^8.0.1",
3940
"import-global": "^0.1.0",
4041
"inquirer": "^4.0.1",
@@ -44,12 +45,10 @@
4445
"klaw-sync": "^3.0.2",
4546
"lodash.clonedeep": "^4.5.0",
4647
"minimist": "^1.2.0",
47-
"mkdirp": "^0.5.1",
4848
"recast": "^0.13.0",
4949
"request": "^2.83.0",
5050
"request-promise-native": "^1.0.5",
5151
"resolve": "^1.5.0",
52-
"rimraf": "^2.6.2",
5352
"semver": "^5.4.1",
5453
"slash": "^1.0.0",
5554
"validate-npm-package-name": "^3.0.0",

yarn.lock

+8
Original file line numberDiff line numberDiff line change
@@ -4324,6 +4324,14 @@ [email protected], fs-extra@^4.0.1, fs-extra@^4.0.2:
43244324
jsonfile "^4.0.0"
43254325
universalify "^0.1.0"
43264326

4327+
fs-extra@^5.0.0:
4328+
version "5.0.0"
4329+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
4330+
dependencies:
4331+
graceful-fs "^4.1.2"
4332+
jsonfile "^4.0.0"
4333+
universalify "^0.1.0"
4334+
43274335
fs-extra@~0.26.5:
43284336
version "0.26.7"
43294337
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"

0 commit comments

Comments
 (0)