diff --git a/bin/src/run/alternateScreen.ts b/bin/src/run/alternateScreen.ts deleted file mode 100644 index 77232badad6..00000000000 --- a/bin/src/run/alternateScreen.ts +++ /dev/null @@ -1,42 +0,0 @@ -import ansiEscape from 'ansi-escapes'; -import { stderr } from '../logging'; - -const SHOW_ALTERNATE_SCREEN = '\u001B[?1049h'; -const HIDE_ALTERNATE_SCREEN = '\u001B[?1049l'; - -const isWindows = process.platform === 'win32'; -const isMintty = isWindows && !!(process.env.SHELL || process.env.TERM); -const isConEmuAnsiOn = (process.env.ConEmuANSI || '').toLowerCase() === 'on'; -const supportsAnsi = !isWindows || isMintty || isConEmuAnsiOn; - -export default function alternateScreen(enabled: boolean) { - if (!enabled) { - let needAnnounce = true; - return { - open() {}, - close() {}, - reset(heading: string) { - if (needAnnounce) { - stderr(heading); - needAnnounce = false; - } - } - }; - } - - return { - open() { - if (supportsAnsi) { - process.stderr.write(SHOW_ALTERNATE_SCREEN); - } - }, - close() { - if (supportsAnsi) { - process.stderr.write(HIDE_ALTERNATE_SCREEN); - } - }, - reset(heading: string) { - stderr(`${ansiEscape.eraseScreen}${ansiEscape.cursorTo(0, 0)}${heading}`); - } - }; -} diff --git a/bin/src/run/resetScreen.ts b/bin/src/run/resetScreen.ts new file mode 100644 index 00000000000..fc946fce8e4 --- /dev/null +++ b/bin/src/run/resetScreen.ts @@ -0,0 +1,17 @@ +import { stderr } from '../logging'; + +const CLEAR_SCREEN = '\u001Bc'; + +export function getResetScreen(clearScreen: boolean) { + if (clearScreen) { + return (heading: string) => stderr(CLEAR_SCREEN + heading); + } + + let firstRun = true; + return (heading: string) => { + if (firstRun) { + stderr(heading); + firstRun = false; + } + }; +} diff --git a/bin/src/run/watch.ts b/bin/src/run/watch.ts index 19bb6eabb70..7eda81d6c99 100644 --- a/bin/src/run/watch.ts +++ b/bin/src/run/watch.ts @@ -15,9 +15,9 @@ import { import mergeOptions, { GenericConfigObject } from '../../../src/utils/mergeOptions'; import relativeId from '../../../src/utils/relativeId'; import { handleError, stderr } from '../logging'; -import alternateScreen from './alternateScreen'; import batchWarnings from './batchWarnings'; import loadConfigFile from './loadConfigFile'; +import { getResetScreen } from './resetScreen'; import { printTimings } from './timings'; interface WatchEvent { @@ -41,19 +41,13 @@ export default function watch( silent = false ) { const isTTY = Boolean(process.stderr.isTTY); - const warnings = batchWarnings(); - - let processConfigsErr: any; const initialConfigs = processConfigs(configs); - const clearScreen = initialConfigs.every( config => (config.watch as WatcherOptions).clearScreen !== false ); - const screen = alternateScreen(isTTY && clearScreen); - screen.open(); - + const resetScreen = getResetScreen(isTTY && clearScreen); let watcher: Watcher; let configWatcher: Watcher; @@ -78,26 +72,16 @@ export default function watch( message: merged.optionError }); - if ( - (merged.inputOptions as RollupWatchOptions).watch && - ((merged.inputOptions as RollupWatchOptions).watch as WatcherOptions).clearScreen === false - ) { - processConfigsErr = stderr; - } - return result; }); } function start(configs: RollupWatchOptions[]) { - const screenWriter = processConfigsErr || screen.reset; - watcher = rollup.watch(configs); watcher.on('event', (event: WatchEvent) => { switch (event.code) { case 'FATAL': - screen.close(); handleError(event.error as RollupError, true); process.exit(1); break; @@ -109,7 +93,7 @@ export default function watch( case 'START': if (!silent) { - screenWriter(tc.underline(`rollup v${rollup.VERSION}`)); + resetScreen(tc.underline(`rollup v${rollup.VERSION}`)); } break; @@ -171,7 +155,6 @@ export default function watch( // removing a non-existent listener is a no-op process.stdin.removeListener('end', close); - screen.close(); if (watcher) watcher.close(); if (configWatcher) configWatcher.close(); diff --git a/package-lock.json b/package-lock.json index f42ad94e2cd..9530f0ce44d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -208,13 +208,10 @@ } }, "ansi-escapes": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.0.tgz", - "integrity": "sha512-0+VX4uhi8m3aNbzoqKmkAVOEj6uQzcUHXoFPkKjhZPTpGRUBqVh930KbB6PS4zIyDZccphlLIYlu8nsjFzkXwg==", - "dev": true, - "requires": { - "type-fest": "^0.5.2" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, "ansi-regex": { "version": "3.0.0", @@ -2216,12 +2213,6 @@ "parse-json": "^4.0.0", "type-fest": "^0.4.1" } - }, - "type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", - "dev": true } } }, @@ -2329,12 +2320,6 @@ "through": "^2.3.6" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -2821,9 +2806,9 @@ } }, "lint-staged": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.2.0.tgz", - "integrity": "sha512-DxguyxGOIfb67wZ6EOrqzjAbw6ZH9XK3YS74HO+erJf6+SAQeJJPN//GBOG5xhdt2THeuXjVPaHcCYOWGZwRbA==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.2.1.tgz", + "integrity": "sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==", "dev": true, "requires": { "chalk": "^2.3.1", @@ -3080,14 +3065,6 @@ "ansi-escapes": "^3.0.0", "cli-cursor": "^2.0.0", "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - } } }, "magic-string": { @@ -4405,13 +4382,13 @@ } }, "rollup": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.15.1.tgz", - "integrity": "sha512-JErZxFKs0w7wpHZXWonAlom1Jezo0gJ7mf7JHTjOAjFGKAqNMEnlzEjMYhy6cqHgSfSPj/idVscuW+Lo6y6AoQ==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.15.5.tgz", + "integrity": "sha512-Dix1YCY6BlsVK20SjQHBjKqxW2K+lqNr6BlCKxtdZuYqmUWLm8NzKHdrJyiFFjUO2hSI4wiC7apE+jAkDA3fEQ==", "dev": true, "requires": { "@types/estree": "0.0.39", - "@types/node": "^12.0.7", + "@types/node": "^12.0.8", "acorn": "^6.1.1" } }, @@ -4468,9 +4445,9 @@ } }, "rollup-plugin-node-resolve": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.1.tgz", - "integrity": "sha512-9s3dTu44SKQZM/Pwll42GpqXgT+WdvO0Ga01lF8cwZqJGqRUATtD+GrP3uIzZdpnbPonEJbVasfFt80VGPQqKw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.2.tgz", + "integrity": "sha512-/KMxyYDSMoeE+06CwbbPD8gwYcU9uwyOgMjfw2MJPDmwzEw24HIur9TR80SMsUjP2QCLSZ9othB65xNHN3e0gw==", "dev": true, "requires": { "@types/resolve": "0.0.8", @@ -4481,9 +4458,9 @@ }, "dependencies": { "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5286,15 +5263,15 @@ } }, "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", "dev": true }, "typescript": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz", - "integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz", + "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==", "dev": true }, "uc.micro": { diff --git a/package.json b/package.json index 625873e00ee..afd260f8a5f 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "acorn-import-meta": "^1.0.0", "acorn-jsx": "^5.0.1", "acorn-walk": "^6.1.1", - "ansi-escapes": "^4.2.0", "buble": "^0.19.7", "chokidar": "^2.1.6", "console-group": "^0.3.3", @@ -89,7 +88,7 @@ "immutable": "^4.0.0-rc.12", "is-reference": "^1.1.2", "istanbul": "^0.4.5", - "lint-staged": "^8.2.0", + "lint-staged": "^8.2.1", "locate-character": "^2.0.5", "magic-string": "^0.25.2", "markdownlint-cli": "^0.17.0", @@ -102,12 +101,12 @@ "remap-istanbul": "^0.13.0", "require-relative": "^0.8.7", "requirejs": "^2.3.6", - "rollup": "^1.15.1", + "rollup": "^1.15.5", "rollup-plugin-alias": "^1.5.2", "rollup-plugin-buble": "^0.19.6", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.0.1", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.2.0", "rollup-plugin-string": "^3.0.0", "rollup-plugin-terser": "^5.0.0", @@ -124,7 +123,7 @@ "tslib": "^1.10.0", "tslint": "^5.17.0", "turbocolor": "^2.6.1", - "typescript": "^3.5.1", + "typescript": "^3.5.2", "url-parse": "^1.4.7" }, "files": [ diff --git a/typings/declarations.d.ts b/typings/declarations.d.ts index 29c6c5a8c2a..71f65898dd6 100644 --- a/typings/declarations.d.ts +++ b/typings/declarations.d.ts @@ -6,7 +6,6 @@ declare module 'help.md' { } // external libs -declare module 'ansi-escapes'; declare module 'pretty-bytes'; declare module 'rollup-plugin-buble'; declare module 'signal-exit';