diff --git a/bin/vuepress.js b/bin/vuepress.js index 1f6c35da3e..5ba4396b39 100755 --- a/bin/vuepress.js +++ b/bin/vuepress.js @@ -1,11 +1,11 @@ #!/usr/bin/env node -const chalk = require('chalk') +const tc = require('turbocolor') const semver = require('semver') const requiredVersion = require('../package.json').engines.node if (!semver.satisfies(process.version, requiredVersion)) { - console.log(chalk.red( + console.log(tc.red( `\n[vuepress] minimum Node version not met:` + `\nYou are using Node ${process.version}, but VuePress ` + `requires Node ${requiredVersion}.\nPlease upgrade your Node version.\n` @@ -53,14 +53,14 @@ program .arguments('') .action((cmd) => { program.outputHelp() - console.log(` ` + chalk.red(`Unknown command ${chalk.yellow(cmd)}.`)) + console.log(` ` + tc.red(`Unknown command ${tc.yellow(cmd)}.`)) console.log() }) // add some useful info on help program.on('--help', () => { console.log() - console.log(` Run ${chalk.cyan(`vuepress --help`)} for detailed usage of given command.`) + console.log(` Run ${tc.cyan(`vuepress --help`)} for detailed usage of given command.`) console.log() }) @@ -73,23 +73,23 @@ const enhanceErrorMessages = (methodName, log) => { return } this.outputHelp() - console.log(` ` + chalk.red(log(...args))) + console.log(` ` + tc.red(log(...args))) console.log() process.exit(1) } } enhanceErrorMessages('missingArgument', argName => { - return `Missing required argument ${chalk.yellow(`<${argName}>`)}.` + return `Missing required argument ${tc.yellow(`<${argName}>`)}.` }) enhanceErrorMessages('unknownOption', optionName => { - return `Unknown option ${chalk.yellow(optionName)}.` + return `Unknown option ${tc.yellow(optionName)}.` }) enhanceErrorMessages('optionMissingArgument', (option, flag) => { - return `Missing required argument for option ${chalk.yellow(option.flags)}` + ( - flag ? `, got ${chalk.yellow(flag)}` : `` + return `Missing required argument for option ${tc.yellow(option.flags)}` + ( + flag ? `, got ${tc.yellow(flag)}` : `` ) }) @@ -102,7 +102,7 @@ if (!process.argv.slice(2).length) { function wrapCommand (fn) { return (...args) => { return fn(...args).catch(err => { - console.error(chalk.red(err.stack)) + console.error(tc.red(err.stack)) process.exitCode = 1 }) } diff --git a/lib/build.js b/lib/build.js index 16cda677ed..bc571ae912 100644 --- a/lib/build.js +++ b/lib/build.js @@ -3,7 +3,7 @@ module.exports = async function build (sourceDir, cliOptions = {}) { const fs = require('fs-extra') const path = require('path') - const chalk = require('chalk') + const tc = require('turbocolor') const webpack = require('webpack') const readline = require('readline') const escape = require('escape-html') @@ -23,7 +23,7 @@ module.exports = async function build (sourceDir, cliOptions = {}) { const { outDir } = options if (path.resolve() === outDir) { - return console.error(logger.error(chalk.red('Unexpected option: outDir cannot be set to the current working directory.\n'), false)) + return console.error(logger.error(tc.red('Unexpected option: outDir cannot be set to the current working directory.\n'), false)) } await fs.remove(outDir) @@ -96,7 +96,7 @@ module.exports = async function build (sourceDir, cliOptions = {}) { // DONE. const relativeDir = path.relative(process.cwd(), outDir) - logger.success(`\n${chalk.green('Success!')} Generated static files in ${chalk.cyan(relativeDir)}.\n`) + logger.success(`\n${tc.green('Success!')} Generated static files in ${tc.cyan(relativeDir)}.\n`) // --- helpers --- @@ -160,7 +160,7 @@ module.exports = async function build (sourceDir, cliOptions = {}) { try { html = await renderer.renderToString(context) } catch (e) { - console.error(logger.error(chalk.red(`Error rendering ${pagePath}:`), false)) + console.error(logger.error(tc.red(`Error rendering ${pagePath}:`), false)) throw e } const filename = decodeURIComponent(pagePath.replace(/\/$/, '/index.html').replace(/^\//, '')) diff --git a/lib/dev.js b/lib/dev.js index ba909d991c..825516972d 100644 --- a/lib/dev.js +++ b/lib/dev.js @@ -1,7 +1,7 @@ module.exports = async function dev (sourceDir, cliOptions = {}) { const fs = require('fs') const path = require('path') - const chalk = require('chalk') + const tc = require('turbocolor') const webpack = require('webpack') const chokidar = require('chokidar') const serve = require('webpack-serve') @@ -25,7 +25,7 @@ module.exports = async function dev (sourceDir, cliOptions = {}) { // setup watchers to update options and dynamically generated files const update = () => { prepare(sourceDir).catch(err => { - console.error(logger.error(chalk.red(err.stack), false)) + console.error(logger.error(tc.red(err.stack), false)) }) } diff --git a/lib/eject.js b/lib/eject.js index e96b00fd84..82b7b7cdf9 100644 --- a/lib/eject.js +++ b/lib/eject.js @@ -1,6 +1,6 @@ const fs = require('fs-extra') const path = require('path') -const chalk = require('chalk') +const tc = require('turbocolor') const logger = require('./util/logger') module.exports = async (dir) => { @@ -12,5 +12,5 @@ module.exports = async (dir) => { const content = await fs.readFile(styleConfig, 'utf-8') const transformed = content.split('\n').slice(0, -2).join('\n') await fs.writeFile(styleConfig, transformed) - logger.success(`\nCopied default theme into ${chalk.cyan(target)}.\n`) + logger.success(`\nCopied default theme into ${tc.cyan(target)}.\n`) } diff --git a/lib/markdown/highlight.js b/lib/markdown/highlight.js index ea739d4d54..7a828c36eb 100644 --- a/lib/markdown/highlight.js +++ b/lib/markdown/highlight.js @@ -1,4 +1,4 @@ -const chalk = require('chalk') +const tc = require('turbocolor') const prism = require('prismjs') const loadLanguages = require('prismjs/components/index') const escapeHtml = require('escape-html') @@ -33,7 +33,7 @@ module.exports = (str, lang) => { try { loadLanguages([lang]) } catch (e) { - logger.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${lang}" is not supported.`)) + logger.warn(tc.yellow(`[vuepress] Syntax highlight for language "${lang}" is not supported.`)) } } if (prism.languages[lang]) { diff --git a/lib/prepare/index.js b/lib/prepare/index.js index 70a90a45bd..41cdbf06fd 100644 --- a/lib/prepare/index.js +++ b/lib/prepare/index.js @@ -4,7 +4,7 @@ const resolveOptions = require('./resolveOptions') const { genRoutesFile, genComponentRegistrationFile } = require('./codegen') const { writeTemp, writeEnhanceTemp } = require('./util') const logger = require('../util/logger') -const chalk = require('chalk') +const tc = require('turbocolor') module.exports = async function prepare (sourceDir) { // 1. load options @@ -35,8 +35,8 @@ module.exports = async function prepare (sourceDir) { // Temporary tip, will be removed at next release. if (hasUserOverride && !hasUserStyle) { logger.tip( - `${chalk.magenta('override.styl')} has been split into 2 APIs, we recommend you upgrade to continue.\n` + - ` See: ${chalk.magenta('https://vuepress.vuejs.org/default-theme-config/#simple-css-override')}` + `${tc.magenta('override.styl')} has been split into 2 APIs, we recommend you upgrade to continue.\n` + + ` See: ${tc.magenta('https://vuepress.vuejs.org/default-theme-config/#simple-css-override')}` ) } diff --git a/lib/util/logger.js b/lib/util/logger.js index 9fd1a9a296..b49647fac5 100644 --- a/lib/util/logger.js +++ b/lib/util/logger.js @@ -1,4 +1,4 @@ -const chalk = require('chalk') +const tc = require('turbocolor') const logger = {} @@ -31,7 +31,7 @@ const getLoggerFn = (color, label) => (msg, log = true) => { if (log) msg = msg.slice(1) newLine = true } - msg = chalk.reset.inverse.bold[color](` ${label} `) + ' ' + msg + msg = tc.reset.inverse.bold[color](` ${label} `) + ' ' + msg if (log) { console.log(newLine ? '\n' + msg : msg) } else { diff --git a/lib/webpack/DevLogPlugin.js b/lib/webpack/DevLogPlugin.js index 8481b54dde..cea4ce7da0 100644 --- a/lib/webpack/DevLogPlugin.js +++ b/lib/webpack/DevLogPlugin.js @@ -1,4 +1,4 @@ -const chalk = require('chalk') +const tc = require('turbocolor') const logger = require('../util/logger') module.exports = class DevLogPlugin { @@ -14,10 +14,10 @@ module.exports = class DevLogPlugin { const { displayHost, port, publicPath } = this.options const time = new Date().toTimeString().match(/^[\d:]+/)[0] - logger.success(`\n${chalk.gray(`[${time}]`)} Build ${chalk.italic(stats.hash.slice(0, 6))} finished in ${stats.endTime - stats.startTime} ms!`) + logger.success(`\n${tc.gray(`[${time}]`)} Build ${tc.italic(stats.hash.slice(0, 6))} finished in ${stats.endTime - stats.startTime} ms!`) if (isFirst) { isFirst = false - console.log(`\n${chalk.gray('>')} VuePress dev server listening at ${chalk.cyan(`http://${displayHost}:${port}${publicPath}`)}`) + console.log(`\n${tc.gray('>')} VuePress dev server listening at ${tc.cyan(`http://${displayHost}:${port}${publicPath}`)}`) } }) compiler.hooks.invalid.tap('vuepress-log', clearScreen) diff --git a/package.json b/package.json index c6221e56f3..41b268fba2 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "autoprefixer": "^8.2.0", "babel-loader": "8.0.0-beta.3", "cache-loader": "^1.2.2", - "chalk": "^2.3.2", + "turbocolor": "^2.2.0", "chokidar": "^2.0.3", "commander": "^2.15.1", "connect-history-api-fallback": "^1.5.0", diff --git a/yarn.lock b/yarn.lock index 95b2e171ef..3026420df0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7921,6 +7921,10 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +turbocolor@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/turbocolor/-/turbocolor-2.2.0.tgz#9e6c9536e014b4214baef6a87fec4ede1d660b6f" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"