diff --git a/package.json b/package.json index b1637cf9..6e5328ff 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,9 @@ }, "homepage": "https://github.com/vuejs/vitepress/tree/master/#readme", "scripts": { - "dev": "run-p dev-client dev-node", + "dev": "run-p dev-client dev-client-copy dev-node", "dev-client": "tsc -w -p src/client", + "dev-client-copy": "node scripts/copy", "dev-node": "tsc -w -p src/node", "build": "rm -rf dist && tsc -p src/client && tsc -p src/node", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", @@ -77,6 +78,7 @@ "@types/lru-cache": "^5.1.0", "@types/markdown-it": "^10.0.1", "@types/node": "^13.13.4", + "chokidar": "^3.4.0", "conventional-changelog-cli": "^2.0.31", "lint-staged": "^10.2.1", "npm-run-all": "^4.1.5", diff --git a/scripts/copy.js b/scripts/copy.js new file mode 100644 index 00000000..dee4e044 --- /dev/null +++ b/scripts/copy.js @@ -0,0 +1,30 @@ +// copy and watch non-ts files in src/client +const fs = require('fs-extra') +const path = require('path') +const globby = require('globby') +const chokidar = require('chokidar') + +const pattern = 'src/client/**/!(*.ts|tsconfig.json)' + +function toDest(file) { + return file.replace(/^src\//, 'dist/') +} + +function copy(file) { + fs.copy(file, toDest(file)) +} + +// copy on start +;(async () => { + for (const file of await globby(pattern)) { + copy(file) + } +})() + +chokidar + .watch(pattern) + .on('change', copy) + .on('add', copy) + .on('unlink', (file) => { + fs.remove(toDest(file)) + }) diff --git a/yarn.lock b/yarn.lock index e9602ba2..8271d063 100644 --- a/yarn.lock +++ b/yarn.lock @@ -679,7 +679,7 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@^3.3.1: +chokidar@^3.3.1, chokidar@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==