diff --git a/packages/@vue/cli-ui/apollo-server/util/notification.js b/packages/@vue/cli-ui/apollo-server/util/notification.js index 3b24f225db..7ee75e9b38 100644 --- a/packages/@vue/cli-ui/apollo-server/util/notification.js +++ b/packages/@vue/cli-ui/apollo-server/util/notification.js @@ -6,6 +6,13 @@ const builtinIcons = { error: path.resolve(__dirname, '../../src/assets/error.png') } +let notifCallback = null +exports.setNotificationCallback = cb => { + notifCallback = cb + ? (_err, action) => (action === 'activate') && cb() + : null +} + // https://github.com/mikaelbr/node-notifier/issues/154 // Specify appID to prevent SnoreToast shortcut installation. // SnoreToast actually uses it as the string in the notification's @@ -19,5 +26,5 @@ exports.notify = ({ title, message, icon }) => { title, message, icon: builtinIcons[icon] || icon - }) + }, notifCallback) } diff --git a/packages/@vue/cli/lib/ui.js b/packages/@vue/cli/lib/ui.js index bb90a98002..8d928b1a36 100644 --- a/packages/@vue/cli/lib/ui.js +++ b/packages/@vue/cli/lib/ui.js @@ -1,6 +1,7 @@ const { log, error, openBrowser } = require('@vue/cli-shared-utils') const { portfinder, server } = require('@vue/cli-ui/server') const shortid = require('shortid') +const { setNotificationCallback } = require('@vue/cli-ui/apollo-server/util/notification') function simpleCorsValidation (allowedHost) { return function (req, socket) { @@ -77,6 +78,7 @@ async function ui (options = {}, context = process.cwd()) { if (options.headless) { console.log(port) } else { + setNotificationCallback(() => openBrowser(url)) openBrowser(url) } })