From 364397c6162c14381edbf0ff1dfc41eaf66c44b9 Mon Sep 17 00:00:00 2001 From: Jake Deichert Date: Mon, 10 Feb 2020 23:02:19 -0500 Subject: [PATCH] Auto delete dist directory on build (#42) --- README.md | 7 ++----- examples/basic/package.json | 5 ++--- package.json | 2 ++ src/index.ts | 7 +++++++ tests/snapshot-babel-override/package.json | 5 ++--- tests/snapshot/package.json | 5 ++--- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index b546311..48cf595 100644 --- a/README.md +++ b/README.md @@ -57,13 +57,10 @@ Add a few simple scripts as seen [here][basic_example_package]: "scripts": { // This starts svelvet in watch mode and runs snowpack once to generate dist/web_modules. // It also starts a live reloading dev server on localhost:8080 - "dev": "npm run clean && svelvet", + "dev": "svelvet", // This builds the dist directory optimized for production with snowpack - "build": "NODE_ENV=production npm run dev", - - // Remove generated files for a clean build - "clean": "rm -rf dist/*" + "build": "NODE_ENV=production svelvet" }, ~~~ diff --git a/examples/basic/package.json b/examples/basic/package.json index a32dea5..a4053bf 100755 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -2,9 +2,8 @@ "name": "svelvet-example-basic", "private": true, "scripts": { - "dev": "npm run clean && svelvet", - "build": "NODE_ENV=production npm run dev", - "clean": "rm -rf dist" + "dev": "svelvet", + "build": "NODE_ENV=production svelvet" }, "dependencies": { "svelte": "^3.7.1" diff --git a/package.json b/package.json index f3005bd..50ce40c 100755 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "chokidar": "^3.3.1", "glob": "^7.1.6", "p-limit": "^2.2.2", + "rimraf": "^3.0.2", "servor": "^3.1.0", "snowpack": "1.2.0", "terser": "^4.6.3" @@ -29,6 +30,7 @@ "@types/babel__core": "^7.1.3", "@types/glob": "^7.1.1", "@types/node": "^13.1.8", + "@types/rimraf": "^2.0.3", "@typescript-eslint/eslint-plugin": "^2.16.0", "@typescript-eslint/parser": "^2.16.0", "prettier": "^1.16.1", diff --git a/src/index.ts b/src/index.ts index ad6092f..dbf5496 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,6 +10,7 @@ import * as glob from 'glob'; import * as terser from 'terser'; import pLimit from 'p-limit'; import * as servor from 'servor'; +import * as rimraf from 'rimraf'; const exec = util.promisify(execSync); @@ -31,6 +32,11 @@ const BABEL_CONFIG = existsSync('./babel.config.js') ], }; +async function cleanDist(): Promise { + if (process.argv.includes('--no-clean')) return; + await new Promise(resolve => rimraf('dist', resolve)); +} + async function compile( srcPath: string ): Promise<{ @@ -274,6 +280,7 @@ async function startDevServer(): Promise { } async function main(): Promise { + await cleanDist(); await initialBuild(); if (IS_PRODUCTION_MODE) return; startWatchMode(); diff --git a/tests/snapshot-babel-override/package.json b/tests/snapshot-babel-override/package.json index ad26327..b766364 100755 --- a/tests/snapshot-babel-override/package.json +++ b/tests/snapshot-babel-override/package.json @@ -2,9 +2,8 @@ "name": "svelvet-test", "private": true, "scripts": { - "dev": "npm run clean && svelvet", - "build": "NODE_ENV=production npm run dev", - "clean": "rm -rf dist" + "dev": "svelvet", + "build": "NODE_ENV=production svelvet" }, "dependencies": { "svelte": "3.18.1" diff --git a/tests/snapshot/package.json b/tests/snapshot/package.json index ad26327..b766364 100755 --- a/tests/snapshot/package.json +++ b/tests/snapshot/package.json @@ -2,9 +2,8 @@ "name": "svelvet-test", "private": true, "scripts": { - "dev": "npm run clean && svelvet", - "build": "NODE_ENV=production npm run dev", - "clean": "rm -rf dist" + "dev": "svelvet", + "build": "NODE_ENV=production svelvet" }, "dependencies": { "svelte": "3.18.1"