diff --git a/package.json b/package.json index f321b81..3213ca5 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "eslint-plugin-standard": "^4.0.0", "eslint-plugin-vue": "^5.2.2", "esm": "^3.2.14", + "fs-extra": "^7.0.1", "is-wsl": "^1.1.0", "jest": "^24.3.1", "jest-environment-jsdom": "^24.3.1", @@ -90,7 +91,6 @@ "jsdom": "^14.0.0", "lodash": "^4.17.11", "puppeteer-core": "^1.13.0", - "rimraf": "^2.6.3", "rollup": "^1.6.0", "rollup-plugin-babel": "^4.3.2", "rollup-plugin-commonjs": "^9.2.1", diff --git a/test/utils/build.js b/test/utils/build.js index 85967ec..f7ab39d 100644 --- a/test/utils/build.js +++ b/test/utils/build.js @@ -1,14 +1,10 @@ -import fs from 'fs' +import fs from 'fs-extra' import path from 'path' -import { promisify } from 'util' import { template } from 'lodash' import webpack from 'webpack' import VueLoaderPlugin from 'vue-loader/lib/plugin' import { createRenderer } from 'vue-server-renderer' -const readFile = promisify(fs.readFile) -const writeFile = promisify(fs.writeFile) - const renderer = createRenderer() export function webpackRun(config) { @@ -38,6 +34,10 @@ export async function buildFixture(fixture, config = {}) { } const webpackConfig = createWebpackConfig(config) + // remove old files + await fs.remove(webpackConfig.output.path) + + // run webpack const webpackStats = await webpackRun(webpackConfig) // for test debugging @@ -46,7 +46,7 @@ export async function buildFixture(fixture, config = {}) { const vueApp = await import(path.resolve(fixturePath, 'server')).then(m => m.default || m) - const templateFile = await readFile(path.resolve(fixturePath, '..', 'app.template.html'), { encoding: 'utf8' }) + const templateFile = await fs.readFile(path.resolve(fixturePath, '..', 'app.template.html'), { encoding: 'utf8' }) const compiled = template(templateFile, { interpolate: /{{([\s\S]+?)}}/g }) const webpackAssets = webpackStats.assets.reduce((s, asset) => `${s}\n`, '') @@ -57,7 +57,7 @@ export async function buildFixture(fixture, config = {}) { const appFile = path.resolve(webpackStats.outputPath, 'index.html') const html = compiled({ app, webpackAssets, ...metaInfo }) - await writeFile(appFile, html) + await fs.writeFile(appFile, html) return { url: `file://${appFile}`, diff --git a/yarn.lock b/yarn.lock index c9ea0fe..769e161 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3478,6 +3478,15 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3606,7 +3615,7 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -4816,6 +4825,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -6423,7 +6439,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -7363,6 +7379,11 @@ unist-util-visit@^1.1.0: dependencies: unist-util-visit-parents "^2.0.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"