From bcb2a40fdd890f89460774e84be4277378c6a404 Mon Sep 17 00:00:00 2001 From: Shawn Presser Date: Wed, 20 Dec 2017 19:36:02 -0600 Subject: [PATCH 1/3] Don't show emoji on windows. --- src/Logger.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Logger.js b/src/Logger.js index 3425b27b698..d9201975776 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -1,6 +1,7 @@ const chalk = require('chalk'); const readline = require('readline'); const prettyError = require('./utils/prettyError'); +const isWin = /^win/.test(process.platform); class Logger { constructor(options) { @@ -99,7 +100,7 @@ class Logger { this.writeLine( this.statusLine, - this.chalk[color].bold(`${emoji} ${message}`) + this.chalk[color].bold(`${isWin ? '' : emoji} ${message}`) ); if (!hasStatusLine) { From 46bd76c4805f4d812b48a5d4e8fa88d497e861dc Mon Sep 17 00:00:00 2001 From: Shawn Presser Date: Wed, 20 Dec 2017 20:01:03 -0600 Subject: [PATCH 2/3] Use log-symbols --- package.json | 1 + src/Bundler.js | 9 +++++---- src/Logger.js | 6 +++--- yarn.lock | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index cc2f6a4a59e..987404b6e1c 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "is-url": "^1.2.2", "js-yaml": "^3.10.0", "json5": "^0.5.1", + "log-symbols": "^2.1.0", "micromatch": "^3.0.4", "mkdirp": "^0.5.1", "node-forge": "^0.7.1", diff --git a/src/Bundler.js b/src/Bundler.js index 04dbcb0b06f..8820c61d3ba 100644 --- a/src/Bundler.js +++ b/src/Bundler.js @@ -13,6 +13,7 @@ const Logger = require('./Logger'); const PackagerRegistry = require('./packagers'); const localRequire = require('./utils/localRequire'); const config = require('./utils/config'); +const logSymbols = require('log-symbols'); /** * The Bundler is the main entry point. It resolves and loads assets, @@ -122,7 +123,7 @@ class Bundler extends EventEmitter { this.errored = false; this.logger.clear(); - this.logger.status('⏳', 'Building...'); + this.logger.status(logSymbols.info, 'Building...'); try { // Start worker farm, watcher, etc. if needed @@ -144,7 +145,7 @@ class Bundler extends EventEmitter { buildTime < 1000 ? `${buildTime}ms` : `${(buildTime / 1000).toFixed(2)}s`; - this.logger.status('✨', `Built in ${time}.`, 'green'); + this.logger.status(logSymbols.success, `Built in ${time}.`, 'green'); return bundle; } catch (err) { @@ -304,7 +305,7 @@ class Bundler extends EventEmitter { } if (!this.errored) { - this.logger.status('⏳', `Building ${asset.basename}...`); + this.logger.status(logSymbols.info, `Building ${asset.basename}...`); } // Mark the asset processed so we don't load it twice @@ -461,7 +462,7 @@ class Bundler extends EventEmitter { } this.logger.clear(); - this.logger.status('⏳', `Building ${asset.basename}...`); + this.logger.status(logSymbols.info, `Building ${asset.basename}...`); // Add the asset to the rebuild queue, and reset the timeout. this.buildQueue.add(asset); diff --git a/src/Logger.js b/src/Logger.js index d9201975776..fd10517459e 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -1,7 +1,7 @@ const chalk = require('chalk'); const readline = require('readline'); const prettyError = require('./utils/prettyError'); -const isWin = /^win/.test(process.platform); +const logSymbols = require('log-symbols'); class Logger { constructor(options) { @@ -52,7 +52,7 @@ class Logger { let {message, stack} = prettyError(err, {color: this.color}); - this.status('🚨', message, 'red'); + this.status(logSymbols.error, message, 'red'); if (stack) { this.write(stack); } @@ -100,7 +100,7 @@ class Logger { this.writeLine( this.statusLine, - this.chalk[color].bold(`${isWin ? '' : emoji} ${message}`) + this.chalk[color].bold(`${emoji} ${message}`) ); if (!hasStatusLine) { diff --git a/yarn.lock b/yarn.lock index c55bb245edc..6f0e7ea3b95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3118,7 +3118,7 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.0.0: +log-symbols@^2.0.0, log-symbols@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.1.0.tgz#f35fa60e278832b538dc4dddcbb478a45d3e3be6" dependencies: From 76575bbbc814d2692a8c2b5cfdb2220a41856d2c Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sun, 24 Dec 2017 18:22:04 -0500 Subject: [PATCH 3/3] Emoji with fallback for windows --- package.json | 1 - src/Bundler.js | 10 +++++----- src/Logger.js | 4 ++-- src/utils/emoji.js | 6 ++++++ yarn.lock | 2 +- 5 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 src/utils/emoji.js diff --git a/package.json b/package.json index 987404b6e1c..cc2f6a4a59e 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "is-url": "^1.2.2", "js-yaml": "^3.10.0", "json5": "^0.5.1", - "log-symbols": "^2.1.0", "micromatch": "^3.0.4", "mkdirp": "^0.5.1", "node-forge": "^0.7.1", diff --git a/src/Bundler.js b/src/Bundler.js index 8820c61d3ba..ad92a5dd9fa 100644 --- a/src/Bundler.js +++ b/src/Bundler.js @@ -13,7 +13,7 @@ const Logger = require('./Logger'); const PackagerRegistry = require('./packagers'); const localRequire = require('./utils/localRequire'); const config = require('./utils/config'); -const logSymbols = require('log-symbols'); +const emoji = require('./utils/emoji'); /** * The Bundler is the main entry point. It resolves and loads assets, @@ -123,7 +123,7 @@ class Bundler extends EventEmitter { this.errored = false; this.logger.clear(); - this.logger.status(logSymbols.info, 'Building...'); + this.logger.status(emoji.progress, 'Building...'); try { // Start worker farm, watcher, etc. if needed @@ -145,7 +145,7 @@ class Bundler extends EventEmitter { buildTime < 1000 ? `${buildTime}ms` : `${(buildTime / 1000).toFixed(2)}s`; - this.logger.status(logSymbols.success, `Built in ${time}.`, 'green'); + this.logger.status(emoji.success, `Built in ${time}.`, 'green'); return bundle; } catch (err) { @@ -305,7 +305,7 @@ class Bundler extends EventEmitter { } if (!this.errored) { - this.logger.status(logSymbols.info, `Building ${asset.basename}...`); + this.logger.status(emoji.progress, `Building ${asset.basename}...`); } // Mark the asset processed so we don't load it twice @@ -462,7 +462,7 @@ class Bundler extends EventEmitter { } this.logger.clear(); - this.logger.status(logSymbols.info, `Building ${asset.basename}...`); + this.logger.status(emoji.progress, `Building ${asset.basename}...`); // Add the asset to the rebuild queue, and reset the timeout. this.buildQueue.add(asset); diff --git a/src/Logger.js b/src/Logger.js index fd10517459e..47aed23fdf5 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -1,7 +1,7 @@ const chalk = require('chalk'); const readline = require('readline'); const prettyError = require('./utils/prettyError'); -const logSymbols = require('log-symbols'); +const emoji = require('./utils/emoji'); class Logger { constructor(options) { @@ -52,7 +52,7 @@ class Logger { let {message, stack} = prettyError(err, {color: this.color}); - this.status(logSymbols.error, message, 'red'); + this.status(emoji.error, message, 'red'); if (stack) { this.write(stack); } diff --git a/src/utils/emoji.js b/src/utils/emoji.js new file mode 100644 index 00000000000..e2e860f58f9 --- /dev/null +++ b/src/utils/emoji.js @@ -0,0 +1,6 @@ +const supportsEmoji = process.platform !== 'win32' || process.env.VSCODE_PID; + +// Fallback symbols for Windows from https://en.wikipedia.org/wiki/Code_page_437 +exports.progress = supportsEmoji ? '⏳' : '∞'; +exports.success = supportsEmoji ? '✨' : '√'; +exports.error = supportsEmoji ? '🚨' : '×'; diff --git a/yarn.lock b/yarn.lock index 6f0e7ea3b95..c55bb245edc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3118,7 +3118,7 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.0.0, log-symbols@^2.1.0: +log-symbols@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.1.0.tgz#f35fa60e278832b538dc4dddcbb478a45d3e3be6" dependencies: