From 186232ff45aeed6715fd5f65507eb3ab56f61957 Mon Sep 17 00:00:00 2001 From: deangoku Date: Thu, 14 Jun 2018 16:31:04 +0800 Subject: [PATCH 001/344] docs: fix webpack-chain example (#1565) --- docs/guide/webpack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/webpack.md b/docs/guide/webpack.md index 383f1b8c6f..b765860b89 100644 --- a/docs/guide/webpack.md +++ b/docs/guide/webpack.md @@ -52,7 +52,7 @@ This allows us finer-grained control over the internal config. Below you will se // vue.config.js module.exports = { chainWebpack: config => { - config + config.module .rule('vue') .use('vue-loader') .loader('vue-loader') From d98b7ee745582c335956076ef3839b511b54f83d Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 14 Jun 2018 09:44:16 -0400 Subject: [PATCH 002/344] chore: pre release sync --- packages/@vue/cli-plugin-eslint/generator.js | 8 ++++---- packages/@vue/cli-service/__tests__/Service.spec.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/generator.js b/packages/@vue/cli-plugin-eslint/generator.js index 34f12140a2..c93757023c 100644 --- a/packages/@vue/cli-plugin-eslint/generator.js +++ b/packages/@vue/cli-plugin-eslint/generator.js @@ -16,17 +16,17 @@ module.exports = (api, { config, lintOn = [] }) => { if (config === 'airbnb') { eslintConfig.extends.push('@vue/airbnb') Object.assign(pkg.devDependencies, { - '@vue/eslint-config-airbnb': '^3.0.0-rc.1' + '@vue/eslint-config-airbnb': '^3.0.0-rc.2' }) } else if (config === 'standard') { eslintConfig.extends.push('@vue/standard') Object.assign(pkg.devDependencies, { - '@vue/eslint-config-standard': '^3.0.0-rc.1' + '@vue/eslint-config-standard': '^3.0.0-rc.2' }) } else if (config === 'prettier') { eslintConfig.extends.push('@vue/prettier') Object.assign(pkg.devDependencies, { - '@vue/eslint-config-prettier': '^3.0.0-rc.1' + '@vue/eslint-config-prettier': '^3.0.0-rc.2' }) } else { // default @@ -37,7 +37,7 @@ module.exports = (api, { config, lintOn = [] }) => { if (api.hasPlugin('typescript')) { eslintConfig.extends.push('@vue/typescript') Object.assign(pkg.devDependencies, { - '@vue/eslint-config-typescript': '^3.0.0-rc.1' + '@vue/eslint-config-typescript': '^3.0.0-rc.2' }) } diff --git a/packages/@vue/cli-service/__tests__/Service.spec.js b/packages/@vue/cli-service/__tests__/Service.spec.js index 49bd4ea0b6..9bc2eadc64 100644 --- a/packages/@vue/cli-service/__tests__/Service.spec.js +++ b/packages/@vue/cli-service/__tests__/Service.spec.js @@ -62,7 +62,7 @@ test('loading plugins from package.json', () => { mockPkg({ devDependencies: { 'bar': '^1.0.0', - '@vue/cli-plugin-babel': '^3.0.0-rc.1', + '@vue/cli-plugin-babel': '^3.0.0-rc.2', 'vue-cli-plugin-foo': '^1.0.0' } }) From 2698f66670b2cd56bf1ded8f09df983d6c16cbf3 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 14 Jun 2018 09:44:25 -0400 Subject: [PATCH 003/344] v3.0.0-rc.2 --- lerna.json | 2 +- packages/@vue/babel-preset-app/package.json | 2 +- packages/@vue/cli-init/package.json | 2 +- packages/@vue/cli-overlay/package.json | 2 +- packages/@vue/cli-plugin-babel/package.json | 4 ++-- packages/@vue/cli-plugin-e2e-cypress/package.json | 4 ++-- .../@vue/cli-plugin-e2e-nightwatch/package.json | 4 ++-- packages/@vue/cli-plugin-eslint/package.json | 4 ++-- packages/@vue/cli-plugin-pwa/package.json | 2 +- packages/@vue/cli-plugin-typescript/package.json | 4 ++-- packages/@vue/cli-plugin-unit-jest/package.json | 4 ++-- packages/@vue/cli-plugin-unit-mocha/package.json | 4 ++-- packages/@vue/cli-service-global/package.json | 10 +++++----- packages/@vue/cli-service/package.json | 6 +++--- packages/@vue/cli-shared-utils/package.json | 2 +- packages/@vue/cli-test-utils/package.json | 2 +- packages/@vue/cli-ui-addon-webpack/package.json | 10 +++++----- packages/@vue/cli-ui/package.json | 14 +++++++------- packages/@vue/cli/package.json | 8 ++++---- packages/@vue/eslint-config-airbnb/package.json | 2 +- packages/@vue/eslint-config-prettier/package.json | 2 +- packages/@vue/eslint-config-standard/package.json | 2 +- .../@vue/eslint-config-typescript/package.json | 2 +- packages/vue-cli-version-marker/package.json | 2 +- 24 files changed, 50 insertions(+), 50 deletions(-) diff --git a/lerna.json b/lerna.json index c00eeee2d9..cceb88bf4d 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "lerna": "2.5.1", "npmClient": "yarn", "useWorkspaces": true, - "version": "3.0.0-rc.1" + "version": "3.0.0-rc.2" } diff --git a/packages/@vue/babel-preset-app/package.json b/packages/@vue/babel-preset-app/package.json index ce57ad6772..ef105e09d4 100644 --- a/packages/@vue/babel-preset-app/package.json +++ b/packages/@vue/babel-preset-app/package.json @@ -1,6 +1,6 @@ { "name": "@vue/babel-preset-app", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "babel-preset-app for vue-cli", "main": "index.js", "publishConfig": { diff --git a/packages/@vue/cli-init/package.json b/packages/@vue/cli-init/package.json index f668ead997..b338ce7f78 100644 --- a/packages/@vue/cli-init/package.json +++ b/packages/@vue/cli-init/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-init", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "init addon for vue-cli", "main": "index.js", "publishConfig": { diff --git a/packages/@vue/cli-overlay/package.json b/packages/@vue/cli-overlay/package.json index 83186a2dfa..732d23ae0d 100644 --- a/packages/@vue/cli-overlay/package.json +++ b/packages/@vue/cli-overlay/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-overlay", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "error overlay & dev server middleware for vue-cli", "main": "dist/client.js", "files": [ diff --git a/packages/@vue/cli-plugin-babel/package.json b/packages/@vue/cli-plugin-babel/package.json index 5a04c9e6c3..eb095499af 100644 --- a/packages/@vue/cli-plugin-babel/package.json +++ b/packages/@vue/cli-plugin-babel/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-babel", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "babel plugin for vue-cli", "main": "index.js", "repository": { @@ -20,7 +20,7 @@ "homepage": "https://github.com/vuejs/vue-cli/packages/@vue/cli-plugin-babel#readme", "dependencies": { "@babel/core": "7.0.0-beta.47", - "@vue/babel-preset-app": "^3.0.0-rc.1", + "@vue/babel-preset-app": "^3.0.0-rc.2", "babel-loader": "^8.0.0-0" }, "publishConfig": { diff --git a/packages/@vue/cli-plugin-e2e-cypress/package.json b/packages/@vue/cli-plugin-e2e-cypress/package.json index 2607f5d091..4685570f65 100644 --- a/packages/@vue/cli-plugin-e2e-cypress/package.json +++ b/packages/@vue/cli-plugin-e2e-cypress/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-e2e-cypress", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "e2e-cypress plugin for vue-cli", "main": "index.js", "repository": { @@ -22,7 +22,7 @@ "access": "public" }, "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "cypress": "^3.0.0", "eslint-plugin-cypress": "^2.0.1" } diff --git a/packages/@vue/cli-plugin-e2e-nightwatch/package.json b/packages/@vue/cli-plugin-e2e-nightwatch/package.json index 2d7b4e971f..ef6b53692a 100644 --- a/packages/@vue/cli-plugin-e2e-nightwatch/package.json +++ b/packages/@vue/cli-plugin-e2e-nightwatch/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-e2e-nightwatch", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "e2e-nightwatch plugin for vue-cli", "main": "index.js", "repository": { @@ -22,7 +22,7 @@ "access": "public" }, "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "chromedriver": "^2.38.3", "deepmerge": "^2.1.0", "execa": "^0.10.0", diff --git a/packages/@vue/cli-plugin-eslint/package.json b/packages/@vue/cli-plugin-eslint/package.json index 1f6a7ccc48..d66d2c65fe 100644 --- a/packages/@vue/cli-plugin-eslint/package.json +++ b/packages/@vue/cli-plugin-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-eslint", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "eslint plugin for vue-cli", "main": "index.js", "repository": { @@ -22,7 +22,7 @@ "access": "public" }, "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "babel-eslint": "^8.2.3", "eslint": "^4.19.1", "eslint-loader": "^2.0.0", diff --git a/packages/@vue/cli-plugin-pwa/package.json b/packages/@vue/cli-plugin-pwa/package.json index 2120bc9b06..64b9d0c28c 100644 --- a/packages/@vue/cli-plugin-pwa/package.json +++ b/packages/@vue/cli-plugin-pwa/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-pwa", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "pwa plugin for vue-cli", "main": "index.js", "repository": { diff --git a/packages/@vue/cli-plugin-typescript/package.json b/packages/@vue/cli-plugin-typescript/package.json index d364c4668b..23e4dd9e24 100644 --- a/packages/@vue/cli-plugin-typescript/package.json +++ b/packages/@vue/cli-plugin-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-typescript", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "typescript plugin for vue-cli", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ }, "dependencies": { "@types/node": "^9.3.0", - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "fork-ts-checker-webpack-plugin": "^0.4.1", "globby": "^8.0.1", "ts-loader": "^4.3.1", diff --git a/packages/@vue/cli-plugin-unit-jest/package.json b/packages/@vue/cli-plugin-unit-jest/package.json index cb535b1887..369faf9944 100644 --- a/packages/@vue/cli-plugin-unit-jest/package.json +++ b/packages/@vue/cli-plugin-unit-jest/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-unit-jest", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "unit-jest plugin for vue-cli", "main": "index.js", "repository": { @@ -22,7 +22,7 @@ "access": "public" }, "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "babel-jest": "^23.0.1", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", "jest": "^23.1.0", diff --git a/packages/@vue/cli-plugin-unit-mocha/package.json b/packages/@vue/cli-plugin-unit-mocha/package.json index b95ce8e3ea..b9ce72016d 100644 --- a/packages/@vue/cli-plugin-unit-mocha/package.json +++ b/packages/@vue/cli-plugin-unit-mocha/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-plugin-unit-mocha", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "mocha unit testing plugin for vue-cli", "main": "index.js", "repository": { @@ -21,7 +21,7 @@ }, "homepage": "https://github.com/vuejs/vue-cli/packages/@vue/cli-plugin-unit-mocha#readme", "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "jsdom": "^11.10.0", "jsdom-global": "^3.0.2", "mocha": "^5.1.1", diff --git a/packages/@vue/cli-service-global/package.json b/packages/@vue/cli-service-global/package.json index 08e9749223..c0adb734c6 100644 --- a/packages/@vue/cli-service-global/package.json +++ b/packages/@vue/cli-service-global/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-service-global", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "vue-cli-service global addon for vue-cli", "main": "index.js", "publishConfig": { @@ -21,10 +21,10 @@ }, "homepage": "https://github.com/vuejs/vue-cli/packages/@vue/cli-build#readme", "dependencies": { - "@vue/babel-preset-app": "^3.0.0-rc.1", - "@vue/cli-plugin-babel": "^3.0.0-rc.1", - "@vue/cli-plugin-eslint": "^3.0.0-rc.1", - "@vue/cli-service": "^3.0.0-rc.1", + "@vue/babel-preset-app": "^3.0.0-rc.2", + "@vue/cli-plugin-babel": "^3.0.0-rc.2", + "@vue/cli-plugin-eslint": "^3.0.0-rc.2", + "@vue/cli-service": "^3.0.0-rc.2", "chalk": "^2.4.1", "eslint-plugin-vue": "^4.5.0", "resolve": "^1.7.1", diff --git a/packages/@vue/cli-service/package.json b/packages/@vue/cli-service/package.json index 5a97be1f4b..71c5a9720b 100644 --- a/packages/@vue/cli-service/package.json +++ b/packages/@vue/cli-service/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-service", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "local service for vue-cli projects", "main": "lib/Service.js", "bin": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/vuejs/vue-cli/packages/@vue/cli-service#readme", "dependencies": { - "@vue/cli-overlay": "^3.0.0-rc.1", - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-overlay": "^3.0.0-rc.2", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "@vue/preload-webpack-plugin": "^1.0.0", "@vue/web-component-wrapper": "^1.2.0", "acorn": "^5.5.3", diff --git a/packages/@vue/cli-shared-utils/package.json b/packages/@vue/cli-shared-utils/package.json index 7bd47f3b47..478dc1bb04 100644 --- a/packages/@vue/cli-shared-utils/package.json +++ b/packages/@vue/cli-shared-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-shared-utils", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "shared utilities for vue-cli packages", "main": "index.js", "repository": { diff --git a/packages/@vue/cli-test-utils/package.json b/packages/@vue/cli-test-utils/package.json index 5a62e729ea..09400a194f 100644 --- a/packages/@vue/cli-test-utils/package.json +++ b/packages/@vue/cli-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-test-utils", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "test utilities for vue-cli packages", "repository": { "type": "git", diff --git a/packages/@vue/cli-ui-addon-webpack/package.json b/packages/@vue/cli-ui-addon-webpack/package.json index 71fd70e4a7..c358ab0f60 100644 --- a/packages/@vue/cli-ui-addon-webpack/package.json +++ b/packages/@vue/cli-ui-addon-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-ui-addon-webpack", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "files": [ "dist" ], @@ -11,10 +11,10 @@ "prepublishOnly": "yarn run lint --no-fix && yarn run build" }, "devDependencies": { - "@vue/cli-plugin-babel": "^3.0.0-rc.1", - "@vue/cli-plugin-eslint": "^3.0.0-rc.1", - "@vue/cli-service": "^3.0.0-rc.1", - "@vue/eslint-config-standard": "^3.0.0-rc.1", + "@vue/cli-plugin-babel": "^3.0.0-rc.2", + "@vue/cli-plugin-eslint": "^3.0.0-rc.2", + "@vue/cli-service": "^3.0.0-rc.2", + "@vue/eslint-config-standard": "^3.0.0-rc.2", "stylus": "^0.54.5", "stylus-loader": "^3.0.1", "vue-progress-path": "^0.0.2", diff --git a/packages/@vue/cli-ui/package.json b/packages/@vue/cli-ui/package.json index 18a9bff122..198f7a96ac 100644 --- a/packages/@vue/cli-ui/package.json +++ b/packages/@vue/cli-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli-ui", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", @@ -17,7 +17,7 @@ "test": "yarn run build && cd ../cli-ui-addon-webpack && yarn run build && cd ../cli-ui && yarn run test:run" }, "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", "chalk": "^2.4.1", "clone": "^2.1.1", "deepmerge": "^2.1.0", @@ -44,11 +44,11 @@ "watch": "^1.0.2" }, "devDependencies": { - "@vue/cli-plugin-babel": "^3.0.0-rc.1", - "@vue/cli-plugin-e2e-cypress": "^3.0.0-rc.1", - "@vue/cli-plugin-eslint": "^3.0.0-rc.1", - "@vue/cli-service": "^3.0.0-rc.1", - "@vue/eslint-config-standard": "^3.0.0-rc.1", + "@vue/cli-plugin-babel": "^3.0.0-rc.2", + "@vue/cli-plugin-e2e-cypress": "^3.0.0-rc.2", + "@vue/cli-plugin-eslint": "^3.0.0-rc.2", + "@vue/cli-service": "^3.0.0-rc.2", + "@vue/eslint-config-standard": "^3.0.0-rc.2", "@vue/ui": "^0.3.1", "ansi_up": "^2.0.2", "cross-env": "^5.1.5", diff --git a/packages/@vue/cli/package.json b/packages/@vue/cli/package.json index 136276f9a9..444368c212 100644 --- a/packages/@vue/cli/package.json +++ b/packages/@vue/cli/package.json @@ -1,6 +1,6 @@ { "name": "@vue/cli", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "Command line interface for rapid Vue.js development", "bin": { "vue": "bin/vue.js" @@ -27,9 +27,9 @@ "access": "public" }, "dependencies": { - "@vue/cli-shared-utils": "^3.0.0-rc.1", - "@vue/cli-ui": "^3.0.0-rc.1", - "@vue/cli-ui-addon-webpack": "^3.0.0-rc.1", + "@vue/cli-shared-utils": "^3.0.0-rc.2", + "@vue/cli-ui": "^3.0.0-rc.2", + "@vue/cli-ui-addon-webpack": "^3.0.0-rc.2", "chalk": "^2.3.0", "cmd-shim": "^2.0.2", "commander": "^2.12.2", diff --git a/packages/@vue/eslint-config-airbnb/package.json b/packages/@vue/eslint-config-airbnb/package.json index fa746eebbb..5d75bd1eae 100644 --- a/packages/@vue/eslint-config-airbnb/package.json +++ b/packages/@vue/eslint-config-airbnb/package.json @@ -1,6 +1,6 @@ { "name": "@vue/eslint-config-airbnb", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "eslint-config-airbnb for vue-cli", "main": "index.js", "publishConfig": { diff --git a/packages/@vue/eslint-config-prettier/package.json b/packages/@vue/eslint-config-prettier/package.json index a21c0b03e9..e2855bfd44 100644 --- a/packages/@vue/eslint-config-prettier/package.json +++ b/packages/@vue/eslint-config-prettier/package.json @@ -1,6 +1,6 @@ { "name": "@vue/eslint-config-prettier", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "eslint-config-prettier for vue-cli", "main": "index.js", "publishConfig": { diff --git a/packages/@vue/eslint-config-standard/package.json b/packages/@vue/eslint-config-standard/package.json index ef08852f2c..a843680244 100644 --- a/packages/@vue/eslint-config-standard/package.json +++ b/packages/@vue/eslint-config-standard/package.json @@ -1,6 +1,6 @@ { "name": "@vue/eslint-config-standard", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "eslint-config-standard for vue-cli", "main": "index.js", "publishConfig": { diff --git a/packages/@vue/eslint-config-typescript/package.json b/packages/@vue/eslint-config-typescript/package.json index 556f1da89e..b400096400 100644 --- a/packages/@vue/eslint-config-typescript/package.json +++ b/packages/@vue/eslint-config-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@vue/eslint-config-typescript", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "eslint-config-typescript for vue-cli", "main": "index.js", "publishConfig": { diff --git a/packages/vue-cli-version-marker/package.json b/packages/vue-cli-version-marker/package.json index e63e0af947..63b7627f2a 100644 --- a/packages/vue-cli-version-marker/package.json +++ b/packages/vue-cli-version-marker/package.json @@ -1,6 +1,6 @@ { "name": "vue-cli-version-marker", - "version": "3.0.0-rc.1", + "version": "3.0.0-rc.2", "description": "version marker for @vue/cli", "author": "Evan You", "license": "MIT" From 9e9d4ee3807a9013e28528863fe5779bc6026f53 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 14 Jun 2018 09:46:06 -0400 Subject: [PATCH 004/344] chore: 3.0.0-rc.2 changelog [ci skip] --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 990561f112..327796ecbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ + +# [3.0.0-rc.2](https://github.com/vuejs/vue-cli/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2018-06-14) + + +### Bug Fixes + +* **ui:** sharedData watchers ([f486d7e](https://github.com/vuejs/vue-cli/commit/f486d7e)) +* **ui:** wrong NODE_ENV value if undefined ([09b72eb](https://github.com/vuejs/vue-cli/commit/09b72eb)) +* **ui:** wwebpack dashboard performance improvements ([9f5dda4](https://github.com/vuejs/vue-cli/commit/9f5dda4)) + + +### Features + +* **ui:** modern build mode ([dbf7231](https://github.com/vuejs/vue-cli/commit/dbf7231)) + + + # [3.0.0-rc.1](https://github.com/vuejs/vue-cli/compare/v3.0.0-beta.16...v3.0.0-rc.1) (2018-06-13) From 3994dac47cd84262c68231cb01fc3c404afa9e45 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 14 Jun 2018 09:51:42 -0400 Subject: [PATCH 005/344] docs: remove unnecessary line in example [ci skip] --- docs/guide/css.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/guide/css.md b/docs/guide/css.md index b6779233d7..910d3b1eac 100644 --- a/docs/guide/css.md +++ b/docs/guide/css.md @@ -82,8 +82,6 @@ Sometimes you may want to pass options to the pre-processor's webpack loader. Yo ``` js // vue.config.js -const fs = require('fs') - module.exports = { css: { loaderOptions: { From 4144efc9c540b8e54bbe31af64626b92e8987c8d Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 16:28:49 +0200 Subject: [PATCH 006/344] fix(ui): images urls while serving the ui (dev) --- packages/@vue/cli-ui/.env.development | 1 + packages/@vue/cli-ui/package.json | 2 +- packages/@vue/cli-ui/src/components/ItemLogo.vue | 12 ++++++++++-- .../@vue/cli-ui/src/components/ProjectNavButton.vue | 11 ++++++++++- .../cli-ui/src/graphql-api/connectors/locales.js | 2 +- packages/@vue/cli-ui/src/graphql-api/utils/logger.js | 4 ++-- packages/@vue/cli-ui/vue-cli-ui.js | 4 ++-- packages/@vue/cli/lib/ui.js | 2 +- 8 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 packages/@vue/cli-ui/.env.development diff --git a/packages/@vue/cli-ui/.env.development b/packages/@vue/cli-ui/.env.development new file mode 100644 index 0000000000..42cb094959 --- /dev/null +++ b/packages/@vue/cli-ui/.env.development @@ -0,0 +1 @@ +VUE_APP_CLI_UI_DEV=true diff --git a/packages/@vue/cli-ui/package.json b/packages/@vue/cli-ui/package.json index 198f7a96ac..d78e42bbbd 100644 --- a/packages/@vue/cli-ui/package.json +++ b/packages/@vue/cli-ui/package.json @@ -5,7 +5,7 @@ "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", - "graphql-api": "cross-env VUE_CLI_DEBUG=true VUE_CLI_UI_DEV=true VUE_CLI_IPC=vue-cli-dev vue-cli-service graphql-api", + "graphql-api": "cross-env VUE_CLI_DEBUG=true VUE_APP_CLI_UI_DEV=true VUE_CLI_IPC=vue-cli-dev vue-cli-service graphql-api", "run-graphql-api": "vue-cli-service run-graphql-api", "test-graphql-api": "cross-env VUE_CLI_UI_TEST=true VUE_APP_GRAPHQL_PORT=4040 VUE_APP_CLI_UI_URL=ws://localhost:4040/graphql VUE_CLI_IPC=vue-cli-test yarn run graphql-api", "prepublishOnly": "yarn run lint --no-fix && yarn run build", diff --git a/packages/@vue/cli-ui/src/components/ItemLogo.vue b/packages/@vue/cli-ui/src/components/ItemLogo.vue index 87761082ba..dfd9722f84 100644 --- a/packages/@vue/cli-ui/src/components/ItemLogo.vue +++ b/packages/@vue/cli-ui/src/components/ItemLogo.vue @@ -16,8 +16,8 @@ @@ -72,6 +72,14 @@ export default { displayImage () { return !this.isMaterialIcon && !this.error + }, + + imageUrl () { + // Fix images in development + if (process.env.VUE_APP_CLI_UI_DEV && this.image.charAt(0) === '/') { + return `http://localhost:4000${this.image}` + } + return this.image } }, diff --git a/packages/@vue/cli-ui/src/components/ProjectNavButton.vue b/packages/@vue/cli-ui/src/components/ProjectNavButton.vue index d00c3c0bdd..99bdc7e2c5 100644 --- a/packages/@vue/cli-ui/src/components/ProjectNavButton.vue +++ b/packages/@vue/cli-ui/src/components/ProjectNavButton.vue @@ -19,7 +19,7 @@ > @@ -72,6 +72,15 @@ export default { imageIcon () { return this.view.icon && this.view.icon.indexOf('.') !== -1 } + }, + + methods: { + imageSrc (url) { + if (process.env.VUE_APP_CLI_UI_DEV && url.charAt(0) === '/') { + return `http://localhost:4000${url}` + } + return url + } } } diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/locales.js b/packages/@vue/cli-ui/src/graphql-api/connectors/locales.js index f23c42225e..bad4248483 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/locales.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/locales.js @@ -47,7 +47,7 @@ function _loadFolder (root, context) { function loadFolder (root, context) { const folder = path.join(root, './locales') - if (process.env.VUE_CLI_UI_DEV && !watchedTrees.get(root) && fs.existsSync(folder)) { + if (process.env.VUE_APP_CLI_UI_DEV && !watchedTrees.get(root) && fs.existsSync(folder)) { watchedTrees.set(root, true) const watch = require('watch') watch.watchTree(folder, () => { diff --git a/packages/@vue/cli-ui/src/graphql-api/utils/logger.js b/packages/@vue/cli-ui/src/graphql-api/utils/logger.js index f4ee637304..6477f319fd 100644 --- a/packages/@vue/cli-ui/src/graphql-api/utils/logger.js +++ b/packages/@vue/cli-ui/src/graphql-api/utils/logger.js @@ -1,7 +1,7 @@ const chalk = require('chalk') exports.log = (...args) => { - if (!process.env.VUE_CLI_UI_DEV) return + if (!process.env.VUE_APP_CLI_UI_DEV) return const date = new Date() const timestamp = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}.${date.getSeconds().toString().padStart(2, '0')}` const first = args.shift() @@ -15,7 +15,7 @@ const simpleTypes = [ ] exports.dumpObject = (obj) => { - if (!process.env.VUE_CLI_UI_DEV) return + if (!process.env.VUE_APP_CLI_UI_DEV) return const result = {} Object.keys(obj).forEach(key => { const value = obj[key] diff --git a/packages/@vue/cli-ui/vue-cli-ui.js b/packages/@vue/cli-ui/vue-cli-ui.js index c6354dbf89..39de6befd1 100644 --- a/packages/@vue/cli-ui/vue-cli-ui.js +++ b/packages/@vue/cli-ui/vue-cli-ui.js @@ -1,6 +1,6 @@ // This file will be loaded when the project is opened module.exports = api => { - if (!process.env.VUE_CLI_UI_DEV) return + if (!process.env.VUE_APP_CLI_UI_DEV) return console.log('has(eslint)', api.hasPlugin('eslint')) console.log('has(typescript)', api.hasPlugin('typescript')) @@ -16,7 +16,7 @@ module.exports = api => { id: 'vue-webpack-test-view', name: 'test-webpack-route', // icon: 'pets', - icon: 'http://localhost:4000/public/webpack-logo.png', + icon: '/public/webpack-logo.png', tooltip: 'Test view from webpack addon' }) diff --git a/packages/@vue/cli/lib/ui.js b/packages/@vue/cli/lib/ui.js index 2855cce14e..8385101ce0 100644 --- a/packages/@vue/cli/lib/ui.js +++ b/packages/@vue/cli/lib/ui.js @@ -17,7 +17,7 @@ async function ui (options = {}, context = process.cwd()) { // Dev mode if (options.dev) { - process.env.VUE_CLI_UI_DEV = true + process.env.VUE_APP_CLI_UI_DEV = true } if (!process.env.VUE_CLI_IPC) { From 8753971c6f55c1adc479319caf863ccd33579411 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 16:51:29 +0200 Subject: [PATCH 007/344] fix(ui): task logs queue not flushed if not enough logs --- .../src/graphql-api/connectors/tasks.js | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js b/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js index 637bd70bf6..0af31c0d2f 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js @@ -429,26 +429,38 @@ function open (id, context) { } function logPipe (action) { + const maxTime = 100 + let queue = '' let size = 0 let time = Date.now() + let timeout - return { - add: (string) => { - queue += string - size++ - - if (size === 20 || Date.now() > time + 100) { - action(queue) - queue = '' - size = 0 - time = Date.now() - } - }, - flush: () => { - if (size) action(queue) + const add = (string) => { + queue += string + size++ + + if (size === 20 || Date.now() > time + maxTime) { + flush() + } else { + clearTimeout(timeout) + setTimeout(flush, maxTime) } } + + const flush = () => { + clearTimeout(timeout) + if (!size) return + action(queue) + queue = '' + size = 0 + time = Date.now() + } + + return { + add, + flush + } } module.exports = { From 2a214343c1162db30c016f78b71b0502a6dbc57c Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 16:55:56 +0200 Subject: [PATCH 008/344] fix(ui): put temp stats files in node_modules --- packages/@vue/cli-service/lib/webpack/DashboardPlugin.js | 2 +- packages/@vue/cli-ui/ui-defaults/tasks.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/webpack/DashboardPlugin.js b/packages/@vue/cli-service/lib/webpack/DashboardPlugin.js index 108c0f6b3c..2cb7a053e9 100644 --- a/packages/@vue/cli-service/lib/webpack/DashboardPlugin.js +++ b/packages/@vue/cli-service/lib/webpack/DashboardPlugin.js @@ -176,7 +176,7 @@ class DashboardPlugin { } ]) - const statsFile = path.resolve(process.cwd(), `.stats-${this.type}.json`) + const statsFile = path.resolve(process.cwd(), `./node_modules/.stats-${this.type}.json`) fs.writeJson(statsFile, { errors: hasErrors, warnings: stats.hasWarnings(), diff --git a/packages/@vue/cli-ui/ui-defaults/tasks.js b/packages/@vue/cli-ui/ui-defaults/tasks.js index ee257677c1..596a97dad5 100644 --- a/packages/@vue/cli-ui/ui-defaults/tasks.js +++ b/packages/@vue/cli-ui/ui-defaults/tasks.js @@ -23,7 +23,7 @@ module.exports = api => { for (const data of message.webpackDashboardData.value) { if (data.type === 'stats') { // Stats are read from a file - const statsFile = path.resolve(process.cwd(), `.stats-${type}.json`) + const statsFile = path.resolve(process.cwd(), `./node_modules/.stats-${type}.json`) const value = await fs.readJson(statsFile) setSharedData(`${type}-${data.type}`, value) await fs.remove(statsFile) From 0ea3a221065394f3af54f320ea92896b61aec85c Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 17:02:03 +0200 Subject: [PATCH 009/344] fix(ui): task logs performance regression --- packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js b/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js index 0af31c0d2f..e07e8e4c18 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js @@ -429,7 +429,7 @@ function open (id, context) { } function logPipe (action) { - const maxTime = 100 + const maxTime = 300 let queue = '' let size = 0 @@ -440,11 +440,11 @@ function logPipe (action) { queue += string size++ - if (size === 20 || Date.now() > time + maxTime) { + if (size === 50 || Date.now() > time + maxTime) { flush() } else { clearTimeout(timeout) - setTimeout(flush, maxTime) + timeout = setTimeout(flush, maxTime) } } From b0ed1e2f115350111d1718f0a1641251df968911 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 17:21:50 +0200 Subject: [PATCH 010/344] feat(ui): mocha task --- packages/@vue/cli-plugin-unit-mocha/ui.js | 18 ++++++++++++++++++ packages/@vue/cli-ui/locales/en.json | 8 ++++++++ 2 files changed, 26 insertions(+) create mode 100644 packages/@vue/cli-plugin-unit-mocha/ui.js diff --git a/packages/@vue/cli-plugin-unit-mocha/ui.js b/packages/@vue/cli-plugin-unit-mocha/ui.js new file mode 100644 index 0000000000..3101db6d96 --- /dev/null +++ b/packages/@vue/cli-plugin-unit-mocha/ui.js @@ -0,0 +1,18 @@ +module.exports = api => { + api.describeTask({ + match: /vue-cli-service test:unit/, + description: 'mocha.tasks.test.description', + link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-mocha#injected-commands', + prompts: [ + { + name: 'watch', + type: 'confirm', + default: false, + description: 'mocha.tasks.test.watch' + } + ], + onBeforeRun: ({ answers, args }) => { + if (answers.watch) args.push('--watch') + } + }) +} diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 9beefce849..8cd7fe538b 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -543,5 +543,13 @@ "update": "Re-record every snapshot that fails during this test run" } } + }, + "mocha": { + "tasks": { + "test": { + "description": "Run unit tests with Mocha", + "watch": "Watch files for changes and rerun tests related to changed files" + } + } } } From bbc974d0dbfeea09b0bb7f01f7519e7ac011065a Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 17:50:23 +0200 Subject: [PATCH 011/344] fix(ui): Config prompts error --- packages/@vue/cli-ui/src/components/ConfigurationTab.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-ui/src/components/ConfigurationTab.vue b/packages/@vue/cli-ui/src/components/ConfigurationTab.vue index fa561a2474..2da51104ce 100644 --- a/packages/@vue/cli-ui/src/components/ConfigurationTab.vue +++ b/packages/@vue/cli-ui/src/components/ConfigurationTab.vue @@ -29,7 +29,7 @@ export default { list.push(prompt) } for (const tabId in result) { - data.configuration.tabs[tabId].prompts = result[tabId] + data.configuration.tabs.find(t => t.id === tabId).prompts = result[tabId] } } }) From f365767fea527dcdfa730446d22963d732ae4167 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 19:40:24 +0200 Subject: [PATCH 012/344] fix(ui): translate link --- packages/@vue/cli-ui/src/components/StatusBar.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-ui/src/components/StatusBar.vue b/packages/@vue/cli-ui/src/components/StatusBar.vue index 2c4362fc6a..3c2fcc4937 100644 --- a/packages/@vue/cli-ui/src/components/StatusBar.vue +++ b/packages/@vue/cli-ui/src/components/StatusBar.vue @@ -143,7 +143,7 @@ export default { onTranslateClick () { const win = window.open( - 'https://cli.vuejs.org/dev-guide/ui-plugin-dev.html#localization', + 'https://cli.vuejs.org/dev-guide/ui-localization.html', '_blank' ) win.focus() From d5d57fe70e0a0e2d0fc76d010e4721faa033daa1 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 19:44:49 +0200 Subject: [PATCH 013/344] fix(ui): tweak prompt style for more spacing --- packages/@vue/cli-ui/src/components/Prompt.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-ui/src/components/Prompt.vue b/packages/@vue/cli-ui/src/components/Prompt.vue index 8920f83693..052b070297 100644 --- a/packages/@vue/cli-ui/src/components/Prompt.vue +++ b/packages/@vue/cli-ui/src/components/Prompt.vue @@ -43,7 +43,6 @@ export default { grid-template-columns auto 300px grid-template-rows auto grid-template-areas "info input" - grid-gap $padding-item padding $padding-item > .list-item-info @@ -54,4 +53,7 @@ export default { v-box() align-items stretch justify-content center + + .list-item-info + margin-right ($padding-item * 2) From 2f0961d09ebcd6380999169f385c863401ff9838 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 20:06:50 +0200 Subject: [PATCH 014/344] feat(ui): vue-cli config --- packages/@vue/cli-ui/locales/en.json | 50 ++++++++ packages/@vue/cli-ui/ui-defaults/config.js | 116 ++++++++++++++++++ packages/@vue/cli-ui/ui-defaults/index.js | 1 + .../@vue/cli-ui/ui-defaults/suggestions.js | 28 +++++ packages/@vue/cli-ui/ui-public/vue-cli.png | Bin 0 -> 882 bytes 5 files changed, 195 insertions(+) create mode 100644 packages/@vue/cli-ui/ui-defaults/config.js create mode 100644 packages/@vue/cli-ui/ui-public/vue-cli.png diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 8cd7fe538b..c13e33d214 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -443,6 +443,56 @@ "mode": "Specify env mode", "verbose": "Show full function definitions in output" } + }, + "config": { + "vue-cli": { + "description": "Configure your Vue project", + "groups": { + "general": "General settings", + "css": "CSS settings" + }, + "baseUrl": { + "label": "Base URL", + "description": "The base URL your application will be deployed at, for example '/my-app/'. Use an empty string ('') so that all assets are linked using relative paths." + }, + "outputDir": { + "label": "Output directory", + "description": "The directory where the production build files will be generated" + }, + "assetsDir": { + "label": "Assets directory", + "description": "A directory to nest generated static assets (js, css, img, fonts) under." + }, + "runtimeCompiler": { + "label": "Enable runtime compiler", + "description": "This will allow you to use the template option in Vue components, but will incur around an extra 10kb payload for your app." + }, + "productionSourceMap": { + "label": "Enable Production Source Maps", + "description": "Disabling this can speed up production builds if you don't need source maps for production" + }, + "parallel": { + "label": "Parallel compilation", + "description": "Whether to use multiple processors to compile Babel or Typescript." + }, + "css": { + "modules": { + "label": "Enable CSS Modules", + "description": "By default, only files that ends in *.module.[ext] are treated as CSS modules. Enabling this will treat all style files as CSS modules." + }, + "extract": { + "label": "Extract CSS", + "description": "Whether to extract CSS in your components into a standalone CSS files (instead of inlined in JavaScript and injected dynamically)." + }, + "sourceMap": { + "label": "Enable CSS Source Maps", + "description": "Whether to enable source maps for CSS. Enabling this may affect build performance." + } + } + } + }, + "suggestions": { + "vue-config-open": "Open vue config" } }, "eslint": { diff --git a/packages/@vue/cli-ui/ui-defaults/config.js b/packages/@vue/cli-ui/ui-defaults/config.js new file mode 100644 index 0000000000..0e45853f26 --- /dev/null +++ b/packages/@vue/cli-ui/ui-defaults/config.js @@ -0,0 +1,116 @@ +module.exports = api => { + api.describeConfig({ + id: 'vue-cli', + name: 'Vue CLI', + description: 'vue-webpack.config.vue-cli.description', + link: 'https://cli.vuejs.org/config/', + files: { + vue: { + js: ['vue.config.js'] + } + }, + icon: '/public/vue-cli.png', + onRead: ({ data }) => ({ + prompts: [ + { + name: 'baseUrl', + type: 'input', + default: '/', + value: data.vue && data.vue.baseUrl, + message: 'vue-webpack.config.vue-cli.baseUrl.label', + description: 'vue-webpack.config.vue-cli.baseUrl.description', + group: 'vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#baseurl' + }, + { + name: 'outputDir', + type: 'input', + default: 'dist', + value: data.vue && data.vue.outputDir, + validate: input => !!input, + message: 'vue-webpack.config.vue-cli.outputDir.label', + description: 'vue-webpack.config.vue-cli.outputDir.description', + group: 'vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#outputdir' + }, + { + name: 'assetsDir', + type: 'input', + default: '', + value: data.vue && data.vue.assetsDir, + message: 'vue-webpack.config.vue-cli.assetsDir.label', + description: 'vue-webpack.config.vue-cli.assetsDir.description', + group: 'vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#assetsdir' + }, + { + name: 'runtimeCompiler', + type: 'confirm', + default: false, + value: data.vue && data.vue.runtimeCompiler, + message: 'vue-webpack.config.vue-cli.runtimeCompiler.label', + description: 'vue-webpack.config.vue-cli.runtimeCompiler.description', + group: 'vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#runtimecompiler' + }, + { + name: 'productionSourceMap', + type: 'confirm', + default: true, + value: data.vue && data.vue.productionSourceMap, + message: 'vue-webpack.config.vue-cli.productionSourceMap.label', + description: 'vue-webpack.config.vue-cli.productionSourceMap.description', + group: 'vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#productionsourcemap' + }, + { + name: 'parallel', + type: 'confirm', + default: require('os').cpus().length > 1, + value: data.vue && data.vue.parallel, + message: 'vue-webpack.config.vue-cli.parallel.label', + description: 'vue-webpack.config.vue-cli.parallel.description', + group: 'vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#parallel' + }, + { + name: 'css.modules', + type: 'confirm', + default: false, + value: data.vue && data.vue.css && data.vue.css.modules, + message: 'vue-webpack.config.vue-cli.css.modules.label', + description: 'vue-webpack.config.vue-cli.css.modules.description', + group: 'vue-webpack.config.vue-cli.groups.css', + link: 'https://cli.vuejs.org/config/#css-modules' + }, + { + name: 'css.extract', + type: 'confirm', + default: true, + value: data.vue && data.vue.css && data.vue.css.extract, + message: 'vue-webpack.config.vue-cli.css.extract.label', + description: 'vue-webpack.config.vue-cli.css.extract.description', + group: 'vue-webpack.config.vue-cli.groups.css', + link: 'https://cli.vuejs.org/config/#css-extract' + }, + { + name: 'css.sourceMap', + type: 'confirm', + default: false, + value: data.vue && data.vue.css && data.vue.css.sourceMap, + message: 'vue-webpack.config.vue-cli.css.sourceMap.label', + description: 'vue-webpack.config.vue-cli.css.sourceMap.description', + group: 'vue-webpack.config.vue-cli.groups.css', + link: 'https://cli.vuejs.org/config/#css-sourcemap' + } + ] + }), + onWrite: async ({ api, prompts }) => { + const vueData = {} + for (const prompt of prompts) { + vueData[prompt.id] = await api.getAnswer(prompt.id) + } + api.setData('vue', vueData) + } + }) +} diff --git a/packages/@vue/cli-ui/ui-defaults/index.js b/packages/@vue/cli-ui/ui-defaults/index.js index 9103c285bf..a68f8189aa 100644 --- a/packages/@vue/cli-ui/ui-defaults/index.js +++ b/packages/@vue/cli-ui/ui-defaults/index.js @@ -1,4 +1,5 @@ module.exports = api => { require('./tasks')(api) require('./suggestions')(api) + require('./config')(api) } diff --git a/packages/@vue/cli-ui/ui-defaults/suggestions.js b/packages/@vue/cli-ui/ui-defaults/suggestions.js index 3de2b49a69..4e7ccbdca5 100644 --- a/packages/@vue/cli-ui/ui-defaults/suggestions.js +++ b/packages/@vue/cli-ui/ui-defaults/suggestions.js @@ -3,6 +3,7 @@ const invoke = require('@vue/cli/lib/invoke') const ROUTER = 'vue-router-add' const VUEX = 'vuex-add' +const VUE_CONFIG_OPEN = 'vue-config-open' module.exports = api => { api.onViewOpen(({ view }) => { @@ -35,6 +36,33 @@ module.exports = api => { } else { [ROUTER, VUEX].forEach(id => api.removeSuggestion(id)) } + + if (view.id !== 'vue-project-configurations') { + api.removeSuggestion(VUE_CONFIG_OPEN) + } + }) + + api.onConfigRead(({ config }) => { + if (config.id === 'vue-cli') { + if (config.foundFiles.vue) { + api.addSuggestion({ + id: VUE_CONFIG_OPEN, + type: 'action', + label: 'vue-webpack.suggestions.vue-config-open', + handler () { + const file = config.foundFiles.vue.path + console.log('open', file) + const launch = require('launch-editor') + launch(file) + return { + keep: true + } + } + }) + return + } + } + api.removeSuggestion(VUE_CONFIG_OPEN) }) } diff --git a/packages/@vue/cli-ui/ui-public/vue-cli.png b/packages/@vue/cli-ui/ui-public/vue-cli.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0ea5e50420683870149a0af470f8d8f9f7a026 GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!mSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=B-~JzX3_ zD(1Ys>FY1-$Z+gq`t2YcK~u)5&BvPO`FvpeCAvq_zCr$M|AUL0Bb3#gl30X8JQOZ* zg`A4MJpJxWS$@;DBX_gzrb~LwyU)Apt}mP*hi6VPhuX1A@yqWu zMcSXTl6`N)&f2gc%K7Oxl>m-O>@(-KdDpEtZ`rbb8>9Iz`~1LlpFY-!Up&qzJ}Id| zLDh_5#?;y)y?n`9_byKJeYjh8$2!S>owm&dAFZ>c?tQ$r(6;%*+YgCV|9`v93BJ<0 zH&XW9mEPI1Gp1gQEmnK@Zc5vp9WCo$H^~0wzL@!C?eewT6Rz|Bue)WcS8 zH&1_GwY8D^%fGe-(~e)b_f+W0T$he%<-zj()4o68tFGjE8=F@?d(rpm4*x^;|K8tX zOVhOdw&L{rZ*zMERo{F*oW-lRWhd|J=yl(n&rWB)5%v1}{f~aq&ptcObFP~HoA+74 z!u>r(42N3t#gq2iaXfu?LZNVRbH>)r1ri6|ZTT#BZugyLCWkE%>}+>)tyEV`3D^;L z(q!J+?F^5f`&dj~uaT}-Ib*7d%r95WeLi0(Tq51k{?bHEjhRi8=AJBnVerUJ z`tJ1EGvktHywBNIEPiDx@0;rvWB Date: Thu, 14 Jun 2018 23:21:22 +0200 Subject: [PATCH 015/344] test(ui): fix e2e --- packages/@vue/cli-ui/tests/e2e/specs/g3-configurations.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-ui/tests/e2e/specs/g3-configurations.js b/packages/@vue/cli-ui/tests/e2e/specs/g3-configurations.js index 0c0ee1eec9..ddb4728898 100644 --- a/packages/@vue/cli-ui/tests/e2e/specs/g3-configurations.js +++ b/packages/@vue/cli-ui/tests/e2e/specs/g3-configurations.js @@ -1,6 +1,6 @@ describe('Configurations', () => { it('Displays configurations', () => { cy.visit('/configuration') - cy.get('.configuration-item').should('have.length', 2) + cy.get('.configuration-item').should('have.length', 3) }) }) From 29fcee73bd85f210ab252ef8d797f7866b34c2b2 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 00:36:34 +0200 Subject: [PATCH 016/344] fix(ui): process exit guard --- packages/@vue/cli-shared-utils/lib/exit.js | 2 +- packages/@vue/cli-ui/src/graphql-api/resolvers.js | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/@vue/cli-shared-utils/lib/exit.js b/packages/@vue/cli-shared-utils/lib/exit.js index f33383181a..c9c543616e 100644 --- a/packages/@vue/cli-shared-utils/lib/exit.js +++ b/packages/@vue/cli-shared-utils/lib/exit.js @@ -1,4 +1,4 @@ -exports.exitProcess = true +exports.exitProcess = !process.env.VUE_CLI_API_MODE exports.exit = function (code) { if (exports.exitProcess) { diff --git a/packages/@vue/cli-ui/src/graphql-api/resolvers.js b/packages/@vue/cli-ui/src/graphql-api/resolvers.js index 327ef8d627..9bd1a49625 100644 --- a/packages/@vue/cli-ui/src/graphql-api/resolvers.js +++ b/packages/@vue/cli-ui/src/graphql-api/resolvers.js @@ -2,7 +2,6 @@ const { withFilter } = require('graphql-subscriptions') const path = require('path') const globby = require('globby') const merge = require('lodash.merge') -const exit = require('@vue/cli-shared-utils/lib/exit') const GraphQLJSON = require('graphql-type-json') // Channels for subscriptions const channels = require('./channels') @@ -16,10 +15,8 @@ const locales = require('./connectors/locales') // Start ipc server require('./utils/ipc') -// Prevent code from exiting server process -exit.exitProcess = false - process.env.VUE_CLI_API_MODE = true +console.log(process.env) const resolvers = [{ JSON: GraphQLJSON, From dc2f8e8ff8ed3ab8fbba9798ce9c0cb8a72b1f41 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 01:28:20 +0200 Subject: [PATCH 017/344] fix(ui): reset webpack.config.js service on correct CWD, closes #1555 --- packages/@vue/cli-service/webpack.config.js | 2 +- packages/@vue/cli-ui/src/graphql-api/connectors/cwd.js | 1 + packages/@vue/cli-ui/src/graphql-api/connectors/projects.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/webpack.config.js b/packages/@vue/cli-service/webpack.config.js index d3842bdb28..642ea1526e 100644 --- a/packages/@vue/cli-service/webpack.config.js +++ b/packages/@vue/cli-service/webpack.config.js @@ -3,7 +3,7 @@ let service = process.VUE_CLI_SERVICE -if (!service) { +if (!service || process.env.VUE_CLI_API_MODE) { const Service = require('./lib/Service') service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd()) service.init(process.env.VUE_CLI_MODE || process.env.NODE_ENV) diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/cwd.js b/packages/@vue/cli-ui/src/graphql-api/connectors/cwd.js index d3a1839e9e..163f49cf98 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/cwd.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/cwd.js @@ -6,6 +6,7 @@ module.exports = { get: () => cwd, set: (value, context) => { cwd = value + process.env.VUE_CLI_CONTEXT = value context.pubsub.publish(channels.CWD_CHANGED, { cwdChanged: value }) try { process.chdir(value) diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js b/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js index 6654f34a49..c8c5dd82e9 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js @@ -246,6 +246,7 @@ async function create (input, context) { }) const targetDir = path.join(cwd.get(), input.folder) + cwd.set(targetDir, context) creator.context = targetDir const inCurrent = input.folder === '.' From 04d76a2efebc322a382ede99d5b660df5e311089 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 01:32:56 +0200 Subject: [PATCH 018/344] fix(ui): remove console.log --- packages/@vue/cli-ui/src/graphql-api/resolvers.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/@vue/cli-ui/src/graphql-api/resolvers.js b/packages/@vue/cli-ui/src/graphql-api/resolvers.js index 9bd1a49625..f9497c2f5a 100644 --- a/packages/@vue/cli-ui/src/graphql-api/resolvers.js +++ b/packages/@vue/cli-ui/src/graphql-api/resolvers.js @@ -16,7 +16,6 @@ const locales = require('./connectors/locales') require('./utils/ipc') process.env.VUE_CLI_API_MODE = true -console.log(process.env) const resolvers = [{ JSON: GraphQLJSON, From 4d9a092ec6c241708a6d2d03b7d070b216eb3f2e Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 01:56:01 +0200 Subject: [PATCH 019/344] feat(ui): project create: folder already exists warning --- packages/@vue/cli-ui/locales/en.json | 4 ++- .../src/graphql-api/connectors/folders.js | 8 +++--- .../cli-ui/src/graphql-api/schema/folder.js | 4 ++- .../@vue/cli-ui/src/graphql/folderExists.gql | 3 +++ .../@vue/cli-ui/src/views/ProjectCreate.vue | 25 ++++++++++++++++++- 5 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 packages/@vue/cli-ui/src/graphql/folderExists.gql diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index c13e33d214..dfef1d1b33 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -190,7 +190,8 @@ "label": "Project folder", "placeholder": "my-app", "tooltip": "Change base folder", - "action": "Select this folder" + "action": "Select this folder", + "folder-exists": "This folder already exists" }, "manager": { "label": "Package manager", @@ -199,6 +200,7 @@ "options": { "label": "Additional options", "force": "Overwrite target folder if it exists", + "git-title": "Git repository", "git": "Initialize git repository (recommended)", "git-commit-message": "Initial commit message (optional)" } diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/folders.js b/packages/@vue/cli-ui/src/graphql-api/connectors/folders.js index 1ad4c44fde..d6132274f3 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/folders.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/folders.js @@ -10,10 +10,11 @@ const pkgCache = new LRU({ const cwd = require('./cwd') function isDirectory (file) { + file = file.replace(/\\/g, path.sep) try { - return fs.statSync(file.path).isDirectory() + return fs.statSync(file).isDirectory() } catch (e) { - console.warn(e.message) + if (process.env.VUE_APP_CLI_UI_DEV) console.warn(e.message) } return false } @@ -26,7 +27,7 @@ async function list (base, context) { name: file }) ).filter( - file => isDirectory(file) + file => isDirectory(file.path) ) } @@ -110,6 +111,7 @@ async function deleteFolder (file) { } module.exports = { + isDirectory, getCurrent, list, open, diff --git a/packages/@vue/cli-ui/src/graphql-api/schema/folder.js b/packages/@vue/cli-ui/src/graphql-api/schema/folder.js index 7fcf67a078..c95c0f24fe 100644 --- a/packages/@vue/cli-ui/src/graphql-api/schema/folder.js +++ b/packages/@vue/cli-ui/src/graphql-api/schema/folder.js @@ -7,6 +7,7 @@ exports.types = gql` extend type Query { folderCurrent: Folder foldersFavorite: [Folder] + folderExists (file: String!): Boolean } extend type Mutation { @@ -34,7 +35,8 @@ exports.resolvers = { Query: { folderCurrent: (root, args, context) => folders.getCurrent(args, context), - foldersFavorite: (root, args, context) => folders.listFavorite(context) + foldersFavorite: (root, args, context) => folders.listFavorite(context), + folderExists: (root, { file }, context) => folders.isDirectory(file) }, Mutation: { diff --git a/packages/@vue/cli-ui/src/graphql/folderExists.gql b/packages/@vue/cli-ui/src/graphql/folderExists.gql new file mode 100644 index 0000000000..e17ea21d19 --- /dev/null +++ b/packages/@vue/cli-ui/src/graphql/folderExists.gql @@ -0,0 +1,3 @@ +query folderExists ($file: String!) { + folderExists(file: $file) +} \ No newline at end of file diff --git a/packages/@vue/cli-ui/src/views/ProjectCreate.vue b/packages/@vue/cli-ui/src/views/ProjectCreate.vue index c3fb1303f7..833f8a869d 100644 --- a/packages/@vue/cli-ui/src/views/ProjectCreate.vue +++ b/packages/@vue/cli-ui/src/views/ProjectCreate.vue @@ -49,6 +49,24 @@ }" /> + + + + @@ -84,7 +102,9 @@ - + Date: Fri, 15 Jun 2018 01:58:40 +0200 Subject: [PATCH 020/344] fix(ui): project create detials: bigger grid gap --- packages/@vue/cli-ui/src/views/ProjectCreate.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-ui/src/views/ProjectCreate.vue b/packages/@vue/cli-ui/src/views/ProjectCreate.vue index 833f8a869d..0dd6ff0010 100644 --- a/packages/@vue/cli-ui/src/views/ProjectCreate.vue +++ b/packages/@vue/cli-ui/src/views/ProjectCreate.vue @@ -13,7 +13,7 @@ icon="subject" >
-
+
@@ -587,6 +587,7 @@ export default { max-width 400px width 100% margin 42px auto + grid-gap ($padding-item * 3) .vue-ui-text.banner margin-top 6px From c3786587ffd6a7d4f44815f5b22b202f18dbe2b7 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 15:44:48 +0200 Subject: [PATCH 021/344] fix(ui): improved performance --- .../src/components/WebpackAnalyzer.vue | 2 ++ .../src/components/ConnectionStatus.vue | 6 +++++ .../@vue/cli-ui/src/components/StatusBar.vue | 2 ++ .../cli-ui/src/components/TerminalView.vue | 27 +++++++++---------- .../@vue/cli-ui/src/mixins/ClientState.js | 23 +++++++++++++--- 5 files changed, 41 insertions(+), 19 deletions(-) diff --git a/packages/@vue/cli-ui-addon-webpack/src/components/WebpackAnalyzer.vue b/packages/@vue/cli-ui-addon-webpack/src/components/WebpackAnalyzer.vue index cee0087c9e..037a57ee1e 100644 --- a/packages/@vue/cli-ui-addon-webpack/src/components/WebpackAnalyzer.vue +++ b/packages/@vue/cli-ui-addon-webpack/src/components/WebpackAnalyzer.vue @@ -118,6 +118,8 @@ import { size } from '../filters' import DonutModule from './DonutModule.vue' export default { + clientState: true, + mixins: [ Dashboard ], diff --git a/packages/@vue/cli-ui/src/components/ConnectionStatus.vue b/packages/@vue/cli-ui/src/components/ConnectionStatus.vue index 675cffef01..b57ad6d065 100644 --- a/packages/@vue/cli-ui/src/components/ConnectionStatus.vue +++ b/packages/@vue/cli-ui/src/components/ConnectionStatus.vue @@ -24,6 +24,12 @@ + + diff --git a/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue b/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue new file mode 100644 index 0000000000..3218d4235a --- /dev/null +++ b/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/packages/@vue/cli-ui/src/main.js b/packages/@vue/cli-ui/src/main.js index e5c0ae3b1f..5122312054 100644 --- a/packages/@vue/cli-ui/src/main.js +++ b/packages/@vue/cli-ui/src/main.js @@ -15,6 +15,7 @@ import SharedData from './util/shared-data' import PluginAction from './util/plugin-action' import gql from 'graphql-tag' import ClientState from './mixins/ClientState' +import SetSize from './util/set-size' window.gql = gql @@ -47,6 +48,8 @@ for (const key in Filters) { Vue.mixin(ClientState) +Vue.directive('set-size', SetSize) + Vue.config.productionTip = false // For client addons diff --git a/packages/@vue/cli-ui/src/util/set-size.js b/packages/@vue/cli-ui/src/util/set-size.js new file mode 100644 index 0000000000..f2d324d506 --- /dev/null +++ b/packages/@vue/cli-ui/src/util/set-size.js @@ -0,0 +1,12 @@ +export default { + bind (el, { value }) { + if (typeof value === 'string') { + value = el.querySelector(value) + } + requestAnimationFrame(() => { + const bounds = value.getBoundingClientRect() + el.style.width = `${bounds.width}px` + el.style.height = `${bounds.height}px` + }) + } +} From e6c754672e589a264a55da1367cf000d8b87fac6 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 20:36:27 +0200 Subject: [PATCH 024/344] chore(ui): upgrade @vue/ui --- packages/@vue/cli-ui/package.json | 2 +- yarn.lock | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/@vue/cli-ui/package.json b/packages/@vue/cli-ui/package.json index d78e42bbbd..b9666aaebf 100644 --- a/packages/@vue/cli-ui/package.json +++ b/packages/@vue/cli-ui/package.json @@ -49,7 +49,7 @@ "@vue/cli-plugin-eslint": "^3.0.0-rc.2", "@vue/cli-service": "^3.0.0-rc.2", "@vue/eslint-config-standard": "^3.0.0-rc.2", - "@vue/ui": "^0.3.1", + "@vue/ui": "^0.4.0", "ansi_up": "^2.0.2", "cross-env": "^5.1.5", "eslint": "^4.16.0", diff --git a/yarn.lock b/yarn.lock index 393822e810..69363c7519 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1033,14 +1033,14 @@ dependencies: lodash "^4.17.4" -"@vue/ui@^0.3.1": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@vue/ui/-/ui-0.3.3.tgz#007a149a670fb08b6c0fe00c908cc43eefd91899" +"@vue/ui@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@vue/ui/-/ui-0.4.0.tgz#dcaf7d2c15e7054f41543ed2940a1d2c2de705d0" dependencies: - focus-visible "^4.1.0" + focus-visible "^4.1.4" material-design-icons "^3.0.1" - v-tooltip "^2.0.0-rc.31" - vue-resize "^0.4.3" + v-tooltip "^2.0.0-rc.33" + vue-resize "^0.4.4" "@vue/web-component-wrapper@^1.2.0": version "1.2.0" @@ -4995,7 +4995,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -focus-visible@^4.1.0: +focus-visible@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-4.1.4.tgz#f9963bcf5784b1d9dcde62ba53214d38a4f3f9af" @@ -11937,9 +11937,9 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" -v-tooltip@^2.0.0-rc.31: - version "2.0.0-rc.32" - resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.0.0-rc.32.tgz#85271476c191598ac59361d0660d5da92dc88bf6" +v-tooltip@^2.0.0-rc.33: + version "2.0.0-rc.33" + resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.0.0-rc.33.tgz#78f7d8e9c34265622be65ba9dc78c67f1dc02b73" dependencies: lodash.merge "^4.6.0" popper.js "^1.12.9" @@ -12131,7 +12131,7 @@ vue-property-decorator@^6.0.0: reflect-metadata "^0.1.10" vue-class-component "^6.1.0" -vue-resize@^0.4.3: +vue-resize@^0.4.3, vue-resize@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/vue-resize/-/vue-resize-0.4.4.tgz#dee9b8dd1b189e7e3f6ec47f86c60694a241bb17" From 22b92ba43540c91835b0365093c5d5e01bb08297 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 20:42:33 +0200 Subject: [PATCH 025/344] feat(ui): better item logo animation --- packages/@vue/cli-ui/src/components/ItemLogo.vue | 5 +++-- packages/@vue/cli-ui/src/components/SuggestionBarItem.vue | 4 ++-- packages/@vue/cli-ui/src/style/vars.styl | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/@vue/cli-ui/src/components/ItemLogo.vue b/packages/@vue/cli-ui/src/components/ItemLogo.vue index dfd9722f84..ce7f877e1d 100644 --- a/packages/@vue/cli-ui/src/components/ItemLogo.vue +++ b/packages/@vue/cli-ui/src/components/ItemLogo.vue @@ -115,6 +115,7 @@ export default { width 100% height @width transform scale(0) + border-radius 50% .vue-ui-icon width 24px height @width @@ -145,13 +146,13 @@ export default { &.loaded .image - animation zoom .1s + animation zoom .5s $ease transform none &.selected, &.error .wrapper - animation zoom .1s + animation zoom .5s $ease &.selected .wrapper diff --git a/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue b/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue index 3218d4235a..f1632e24a4 100644 --- a/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue +++ b/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue @@ -137,9 +137,9 @@ export default { .suggestion-enter-active, .suggestion-leave-active - transition all 1.5s cubic-bezier(0.075, 0.820, 0.165, 1.000) + transition all 1.5s $ease >>> .vue-ui-button - transition all 1.5s cubic-bezier(0.075, 0.820, 0.165, 1.000) + transition all 1.5s $ease .content transition all .2s diff --git a/packages/@vue/cli-ui/src/style/vars.styl b/packages/@vue/cli-ui/src/style/vars.styl index 0a5ac879bf..a8067d2dca 100644 --- a/packages/@vue/cli-ui/src/style/vars.styl +++ b/packages/@vue/cli-ui/src/style/vars.styl @@ -1,2 +1,3 @@ $padding-item = 16px $font-mono = 'Roboto Mono', monospace +$ease = cubic-bezier(0.075, 0.820, 0.165, 1.000) From c65822369bbf30aa1d1f5d494a3ed85affe05e19 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 20:56:13 +0200 Subject: [PATCH 026/344] feat(ui): refresh plugin API button --- packages/@vue/cli-ui/locales/en.json | 3 ++- .../@vue/cli-ui/src/components/StatusBar.vue | 17 +++++++++++++++++ packages/@vue/cli-ui/src/components/TopBar.vue | 2 +- .../src/graphql-api/connectors/plugins.js | 2 ++ .../cli-ui/src/graphql-api/schema/plugin.js | 4 +++- .../@vue/cli-ui/src/graphql/pluginResetApi.gql | 3 +++ 6 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 packages/@vue/cli-ui/src/graphql/pluginResetApi.gql diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index dfef1d1b33..603006b742 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -112,7 +112,8 @@ }, "report-bug": "Report bug", "translate": "Help translate", - "dark-mode": "Toggle dark mode" + "dark-mode": "Toggle dark mode", + "reset-plugin-api": "Refresh plugins API" }, "suggestion-bar": { "suggestion": "Suggestion", diff --git a/packages/@vue/cli-ui/src/components/StatusBar.vue b/packages/@vue/cli-ui/src/components/StatusBar.vue index 933ef0f701..2e529dbeee 100644 --- a/packages/@vue/cli-ui/src/components/StatusBar.vue +++ b/packages/@vue/cli-ui/src/components/StatusBar.vue @@ -70,6 +70,13 @@ >
+
+ +
@@ -79,6 +86,8 @@ import PROJECT_CURRENT from '../graphql/projectCurrent.gql' import CONSOLE_LOG_LAST from '../graphql/consoleLogLast.gql' import CONSOLE_LOG_ADDED from '../graphql/consoleLogAdded.gql' import DARK_MODE_SET from '../graphql/darkModeSet.gql' +import PLUGIN_RESET_API from '../graphql/pluginResetApi.gql' +import { resetApollo } from '../vue-apollo' let lastRoute @@ -174,6 +183,14 @@ export default { toggleDarkMode () { this.applyDarkMode(!this.darkMode) + }, + + async resetPluginApi () { + await this.$apollo.mutate({ + mutation: PLUGIN_RESET_API + }) + + await resetApollo() } } } diff --git a/packages/@vue/cli-ui/src/components/TopBar.vue b/packages/@vue/cli-ui/src/components/TopBar.vue index cf2826984f..8088eef888 100644 --- a/packages/@vue/cli-ui/src/components/TopBar.vue +++ b/packages/@vue/cli-ui/src/components/TopBar.vue @@ -69,7 +69,7 @@ export default { } }) - resetApollo() + await resetApollo() } } } diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js b/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js index 1d6185fbf7..f11f40efb6 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js @@ -132,6 +132,8 @@ function resetPluginApi (context) { if (currentView) views.open(currentView.id) } }) + + return true } function runPluginApi (id, context, fileName = 'ui') { diff --git a/packages/@vue/cli-ui/src/graphql-api/schema/plugin.js b/packages/@vue/cli-ui/src/graphql-api/schema/plugin.js index 5a30e7038b..e2c76512a6 100644 --- a/packages/@vue/cli-ui/src/graphql-api/schema/plugin.js +++ b/packages/@vue/cli-ui/src/graphql-api/schema/plugin.js @@ -18,6 +18,7 @@ extend type Mutation { pluginUpdate (id: ID!): Plugin pluginActionCall (id: ID!, params: JSON): PluginActionResult pluginsUpdate: [Plugin] + pluginResetApi: Boolean } extend type Subscription { @@ -82,7 +83,8 @@ exports.resolvers = { pluginFinishInstall: (root, args, context) => plugins.finishInstall(context), pluginUpdate: (root, { id }, context) => plugins.update(id, context), pluginActionCall: (root, args, context) => plugins.callAction(args, context), - pluginsUpdate: (root, args, context) => plugins.updateAll(context) + pluginsUpdate: (root, args, context) => plugins.updateAll(context), + pluginResetApi: (root, args, context) => plugins.resetPluginApi(context) }, Subscription: { diff --git a/packages/@vue/cli-ui/src/graphql/pluginResetApi.gql b/packages/@vue/cli-ui/src/graphql/pluginResetApi.gql new file mode 100644 index 0000000000..94a16175d6 --- /dev/null +++ b/packages/@vue/cli-ui/src/graphql/pluginResetApi.gql @@ -0,0 +1,3 @@ +mutation pluginResetApi { + pluginResetApi +} \ No newline at end of file From 41075fccecad3e3e1b549fd0641ed4edbcf2f882 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Fri, 15 Jun 2018 20:59:13 +0200 Subject: [PATCH 027/344] refactor(ui): status bar project button --- packages/@vue/cli-ui/locales/en.json | 4 ++-- packages/@vue/cli-ui/src/components/StatusBar.vue | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 603006b742..14fb190ed6 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -100,8 +100,8 @@ }, "status-bar": { "project": { - "tooltip": "Current project
Click to toggle Project Manager", - "empty": "No project" + "tooltip": "Click to toggle Project Manager", + "empty": "No project open" }, "path": { "tooltip": "Current Working Folder" diff --git a/packages/@vue/cli-ui/src/components/StatusBar.vue b/packages/@vue/cli-ui/src/components/StatusBar.vue index 2e529dbeee..6b2393fc74 100644 --- a/packages/@vue/cli-ui/src/components/StatusBar.vue +++ b/packages/@vue/cli-ui/src/components/StatusBar.vue @@ -11,9 +11,8 @@ v-tooltip="$t('components.status-bar.project.tooltip')" @click="onProjectClick()" > - - {{ projectCurrent.name }} - {{ $t('components.status-bar.project.empty') }} + + {{ $t('components.status-bar.project.empty') }} Date: Fri, 15 Jun 2018 21:28:08 +0200 Subject: [PATCH 028/344] test(ui): fix e2e --- packages/@vue/cli-ui/tests/e2e/specs/g1-projects.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-ui/tests/e2e/specs/g1-projects.js b/packages/@vue/cli-ui/tests/e2e/specs/g1-projects.js index d58ab777f6..5d12ead01d 100644 --- a/packages/@vue/cli-ui/tests/e2e/specs/g1-projects.js +++ b/packages/@vue/cli-ui/tests/e2e/specs/g1-projects.js @@ -11,6 +11,7 @@ describe('Vue project manager', () => { }) it('Creates a new project (manual)', () => { + cy.viewport(1400, 800) cy.visit('/project/select') cy.get('.tab-button').eq(1).click() cy.get('.folder-explorer').should('be.visible') @@ -51,7 +52,7 @@ describe('Vue project manager', () => { }) cy.get('.loading-screen .vue-ui-loading-indicator').should('be.visible') cy.get('.project-home', { timeout: 250000 }).should('be.visible') - cy.get('.current-project').should('have.text', 'cli-ui-test') + cy.get('.top-bar .current-project').should('contain', 'cli-ui-test') }) it('Favorites the project', () => { @@ -63,6 +64,7 @@ describe('Vue project manager', () => { }) it('Imports a project', () => { + cy.viewport(1400, 800) cy.visit('/project/select') cy.get('.project-select-list-item').eq(0).get('[data-testid="delete-button"]').click() cy.get('.project-select-list-item').should('not.exist') @@ -75,6 +77,6 @@ describe('Vue project manager', () => { cy.get('.import-project').should('not.have.class', 'disabled').click() }) cy.get('.project-home').should('be.visible') - cy.get('.current-project').should('have.text', 'cli-ui-test') + cy.get('.top-bar .current-project').should('contain', 'cli-ui-test') }) }) From a242d73bab08cb349fb641abae8e157f7905293b Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sat, 16 Jun 2018 00:05:33 +0200 Subject: [PATCH 029/344] feat(ui): about button in project manager --- packages/@vue/cli-ui/src/views/About.vue | 2 +- packages/@vue/cli-ui/src/views/ProjectSelect.vue | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-ui/src/views/About.vue b/packages/@vue/cli-ui/src/views/About.vue index 3e61fe4ec9..7dbb915369 100644 --- a/packages/@vue/cli-ui/src/views/About.vue +++ b/packages/@vue/cli-ui/src/views/About.vue @@ -57,7 +57,7 @@ export default { .about padding 42px - max-width 900px + max-width 840px margin 0 auto box-sizing border-box diff --git a/packages/@vue/cli-ui/src/views/ProjectSelect.vue b/packages/@vue/cli-ui/src/views/ProjectSelect.vue index cb09ba0c6f..2ba98fc180 100644 --- a/packages/@vue/cli-ui/src/views/ProjectSelect.vue +++ b/packages/@vue/cli-ui/src/views/ProjectSelect.vue @@ -56,6 +56,15 @@ + +
+ +
@@ -119,4 +128,9 @@ export default { .project-select height 100% + +.top-menu + position fixed + top $padding-item + right $padding-item From 36bc145d796687668f5285358b6475a7d1739cbc Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sat, 16 Jun 2018 00:34:30 +0200 Subject: [PATCH 030/344] refactor(ui): change style of project delete buttons --- packages/@vue/cli-ui/locales/en.json | 2 +- packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 14fb190ed6..505825789f 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -80,7 +80,7 @@ "project-select-list-item": { "tooltips": { "favorite": "Toggle favorite", - "delete": "Delete" + "delete": "Remove from list" } }, "project-plugin-item": { diff --git a/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue b/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue index 885c40cbce..ba0bf5ed98 100644 --- a/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue +++ b/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue @@ -19,7 +19,7 @@
Date: Sat, 16 Jun 2018 00:46:49 +0200 Subject: [PATCH 031/344] fix(ui): more spacing in status bar --- packages/@vue/cli-ui/src/components/StatusBar.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-ui/src/components/StatusBar.vue b/packages/@vue/cli-ui/src/components/StatusBar.vue index 6b2393fc74..01304972de 100644 --- a/packages/@vue/cli-ui/src/components/StatusBar.vue +++ b/packages/@vue/cli-ui/src/components/StatusBar.vue @@ -210,7 +210,7 @@ export default { align-items center background $vue-ui-color-light font-size 12px - height 28px + height 34px .vue-ui-dark-mode & background $vue-ui-color-darker @@ -218,7 +218,7 @@ export default { h-box() align-items center opacity .8 - padding 0 8px + padding 0 11px height 100% cursor default From 3a88152257df1cb2982190ffa3ffda1e8dcc58b2 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sat, 16 Jun 2018 01:26:38 +0200 Subject: [PATCH 032/344] refactor(ui): update all plugins in one command which is much quicker --- packages/@vue/cli-ui/locales/en.json | 3 +- .../src/graphql-api/connectors/plugins.js | 68 ++++++++++++------- .../@vue/cli-ui/src/views/ProjectPlugins.vue | 5 +- packages/@vue/cli/lib/util/installDeps.js | 2 +- 4 files changed, 48 insertions(+), 30 deletions(-) diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 505825789f..a0341dca03 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -154,7 +154,8 @@ "plugin-install": "Installing {arg0}...", "plugin-uninstall": "Uninstalling {arg0}...", "plugin-invoke": "Invoking {arg0}...", - "plugin-update": "Updating {arg0}..." + "plugin-update": "Updating {arg0}...", + "plugins-update": "Updating {arg0} plugins..." } }, "types": { diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js b/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js index f11f40efb6..410c8523a5 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/plugins.js @@ -76,7 +76,7 @@ function findPlugins (deps) { ) } -function list (file, context) { +function list (file, context, resetApi = true) { const pkg = folders.readPackage(file, context) plugins = [] plugins = plugins.concat(findPlugins(pkg.devDependencies || {})) @@ -90,7 +90,7 @@ function list (file, context) { plugins.unshift(service) } - resetPluginApi(context) + if (resetApi) resetPluginApi(context) return plugins } @@ -379,7 +379,7 @@ async function initPrompts (id, context) { await prompts.start() } -function update (id, context, multi = false) { +function update (id, context) { return progress.wrap('plugin-update', context, async setProgress => { setProgress({ status: 'plugin-update', @@ -396,14 +396,12 @@ function update (id, context, multi = false) { type: 'info' }, context) - if (!multi) { - notify({ - title: `Plugin updated`, - message: `Plugin ${id} was successfully updated`, - icon: 'done' - }) - resetPluginApi(context) - } + notify({ + title: `Plugin updated`, + message: `Plugin ${id} was successfully updated`, + icon: 'done' + }) + resetPluginApi(context) currentPluginId = null return findOne(id) @@ -411,23 +409,43 @@ function update (id, context, multi = false) { } async function updateAll (context) { - const plugins = await list(cwd.get(), context) - let updatedPlugins = [] - for (const plugin of plugins) { - const version = await getVersion(plugin, context) - if (version.current !== version.wanted) { - updatedPlugins.push(await update(plugin.id, context, true)) + return progress.wrap('plugins-update', context, async setProgress => { + const plugins = await list(cwd.get(), context, false) + let updatedPlugins = [] + for (const plugin of plugins) { + const version = await getVersion(plugin, context) + if (version.current !== version.wanted) { + updatedPlugins.push(plugin) + } } - } - notify({ - title: `Plugins updated`, - message: `${updatedPlugins.length} plugin(s) were successfully updated`, - icon: 'done' - }) - resetPluginApi(context) + if (!updatedPlugins.length) { + notify({ + title: `No updates available`, + message: `No plugin to update in the version ranges declared in package.json`, + icon: 'done' + }) + return [] + } + + setProgress({ + status: 'plugins-update', + args: [updatedPlugins.length] + }) + + await updatePackage(cwd.get(), getCommand(), null, updatedPlugins.map( + p => p.id + ).join(' ')) - return updatedPlugins + notify({ + title: `Plugins updated`, + message: `${updatedPlugins.length} plugin(s) were successfully updated`, + icon: 'done' + }) + resetPluginApi(context) + + return updatedPlugins + }) } function getApi () { diff --git a/packages/@vue/cli-ui/src/views/ProjectPlugins.vue b/packages/@vue/cli-ui/src/views/ProjectPlugins.vue index 1cdba065f9..3008a42161 100644 --- a/packages/@vue/cli-ui/src/views/ProjectPlugins.vue +++ b/packages/@vue/cli-ui/src/views/ProjectPlugins.vue @@ -50,9 +50,8 @@ - + +
diff --git a/packages/@vue/cli/lib/util/installDeps.js b/packages/@vue/cli/lib/util/installDeps.js index c3fbbe1110..1d81396fef 100644 --- a/packages/@vue/cli/lib/util/installDeps.js +++ b/packages/@vue/cli/lib/util/installDeps.js @@ -242,7 +242,7 @@ exports.updatePackage = async function (targetDir, command, cliRegistry, package await addRegistryToArgs(command, args, cliRegistry) - args.push(packageName) + packageName.split(' ').forEach(name => args.push(name)) debug(`command: `, command) debug(`args: `, args) From 8957c3aff842295a839a7fc5db520180e57c9dcf Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sat, 16 Jun 2018 22:36:48 +0200 Subject: [PATCH 033/344] feat(ui): validate new project folder name --- packages/@vue/cli-ui/locales/en.json | 3 ++- packages/@vue/cli-ui/src/views/ProjectCreate.vue | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index a0341dca03..8568ca1b1f 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -193,7 +193,8 @@ "placeholder": "my-app", "tooltip": "Change base folder", "action": "Select this folder", - "folder-exists": "This folder already exists" + "folder-exists": "This folder already exists", + "folder-name-invalid": "Folder name invalid" }, "manager": { "label": "Package manager", diff --git a/packages/@vue/cli-ui/src/views/ProjectCreate.vue b/packages/@vue/cli-ui/src/views/ProjectCreate.vue index 0dd6ff0010..7d7505475d 100644 --- a/packages/@vue/cli-ui/src/views/ProjectCreate.vue +++ b/packages/@vue/cli-ui/src/views/ProjectCreate.vue @@ -50,6 +50,14 @@ /> + + Date: Sun, 17 Jun 2018 00:56:43 +0200 Subject: [PATCH 034/344] fix(ui): project creation not reset --- .../src/graphql-api/connectors/projects.js | 5 ++++- .../cli-ui/src/graphql-api/schema/project.js | 4 ++++ .../src/graphql/projectCancelCreation.gql | 3 +++ .../cli-ui/src/graphql/projectInitCreation.gql | 7 +++++++ .../@vue/cli-ui/src/views/ProjectCreate.vue | 18 ++++++++++++------ .../@vue/cli-ui/src/views/ProjectSelect.vue | 11 ++++++++++- 6 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 packages/@vue/cli-ui/src/graphql/projectCancelCreation.gql create mode 100644 packages/@vue/cli-ui/src/graphql/projectInitCreation.gql diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js b/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js index c8c5dd82e9..40d5336b8d 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/projects.js @@ -178,6 +178,7 @@ function removeCreator (context) { installProgress.removeListener('log', onInstallLog) creator = null } + return true } async function getCreation (context) { @@ -426,5 +427,7 @@ module.exports = { open, remove, resetCwd, - setFavorite + setFavorite, + initCreator, + removeCreator } diff --git a/packages/@vue/cli-ui/src/graphql-api/schema/project.js b/packages/@vue/cli-ui/src/graphql-api/schema/project.js index 52dc68314a..9dea1bb543 100644 --- a/packages/@vue/cli-ui/src/graphql-api/schema/project.js +++ b/packages/@vue/cli-ui/src/graphql-api/schema/project.js @@ -11,6 +11,8 @@ extend type Query { } extend type Mutation { + projectInitCreation: ProjectCreation + projectCancelCreation: Boolean projectCreate (input: ProjectCreateInput!): Project! projectImport (input: ProjectImportInput!): Project! projectOpen (id: ID!): Project! @@ -80,6 +82,8 @@ exports.resolvers = { }, Mutation: { + projectInitCreation: (root, args, context) => projects.initCreator(context), + projectCancelCreation: (root, args, context) => projects.removeCreator(context), projectCreate: (root, { input }, context) => projects.create(input, context), projectImport: (root, { input }, context) => projects.import(input, context), projectOpen: (root, { id }, context) => projects.open(id, context), diff --git a/packages/@vue/cli-ui/src/graphql/projectCancelCreation.gql b/packages/@vue/cli-ui/src/graphql/projectCancelCreation.gql new file mode 100644 index 0000000000..c5edcee1b4 --- /dev/null +++ b/packages/@vue/cli-ui/src/graphql/projectCancelCreation.gql @@ -0,0 +1,3 @@ +mutation projectCancelCreation { + projectCancelCreation +} \ No newline at end of file diff --git a/packages/@vue/cli-ui/src/graphql/projectInitCreation.gql b/packages/@vue/cli-ui/src/graphql/projectInitCreation.gql new file mode 100644 index 0000000000..0773a09c4b --- /dev/null +++ b/packages/@vue/cli-ui/src/graphql/projectInitCreation.gql @@ -0,0 +1,7 @@ +#import "./projectCreationFragment.gql" + +mutation projectInitCreation { + projectInitCreation { + ...projectCreation + } +} diff --git a/packages/@vue/cli-ui/src/views/ProjectCreate.vue b/packages/@vue/cli-ui/src/views/ProjectCreate.vue index 7d7505475d..9146fc3a89 100644 --- a/packages/@vue/cli-ui/src/views/ProjectCreate.vue +++ b/packages/@vue/cli-ui/src/views/ProjectCreate.vue @@ -362,7 +362,6 @@ :label="$t('views.project-create.tabs.details.modal.buttons.clear')" icon-left="delete_forever" class="danger" - @click="reset()" /> @@ -425,6 +424,7 @@ import PROJECT_CREATION from '../graphql/projectCreation.gql' import FEATURE_SET_ENABLED from '../graphql/featureSetEnabled.gql' import PRESET_APPLY from '../graphql/presetApply.gql' import PROJECT_CREATE from '../graphql/projectCreate.gql' +import PROJECT_CANCEL_CREATION from '../graphql/projectCancelCreation.gql' function formDataFactory () { return { @@ -510,11 +510,11 @@ export default { } }, - methods: { - reset () { - formData = formDataFactory() - }, + beforeDestroy () { + this.cancel() + }, + methods: { async selectPreset (id) { if (id === 'remote') { this.showRemotePreset = true @@ -571,7 +571,6 @@ export default { } } }) - this.reset() this.$router.push({ name: 'project-home' }) await this.$nextTick() } catch (e) { @@ -579,6 +578,13 @@ export default { console.error(e) this.debug = `ERROR: ${e}` } + }, + + async cancel () { + formData = formDataFactory() + await this.$apollo.mutate({ + mutation: PROJECT_CANCEL_CREATION + }) } } } diff --git a/packages/@vue/cli-ui/src/views/ProjectSelect.vue b/packages/@vue/cli-ui/src/views/ProjectSelect.vue index 2ba98fc180..c94621c069 100644 --- a/packages/@vue/cli-ui/src/views/ProjectSelect.vue +++ b/packages/@vue/cli-ui/src/views/ProjectSelect.vue @@ -30,7 +30,7 @@ icon-left="add" :label="$route.query.hideTabs ? $t('views.project-create.tabs.details.form.folder.action') : $t('views.project-select.buttons.create')" class="big primary create-project" - :to="{ name: 'project-create' }" + @click="createProject()" /> @@ -70,6 +70,7 @@ ``` -This is very usefull if you create a settings component for example. +This is very useful if you create a settings component for example. ## Plugin actions @@ -887,7 +900,7 @@ In the `ui.js` file in the plugin (nodejs), you can use two methods from `Plugin ```js // Call an action -api.callAction('other-action', { foo: 'bar' }).then(results => { +api.callAction('com.my-name.other-action', { foo: 'bar' }).then(results => { console.log(results) }).catch(errors => { console.error(errors) @@ -896,15 +909,19 @@ api.callAction('other-action', { foo: 'bar' }).then(results => { ```js // Listen for an action -api.onAction('test-action', params => { +api.onAction('com.my-name.test-action', params => { console.log('test-action called', params) }) ``` +::: danger +Make sure to namespace the ids correctly, since they must be unique across all plugins. It's recommended to use the [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation). +::: + You can use namespaced versions with `api.namespace` (similar to Shared data): ```js -const { onAction, callAction } = api.namespace('vue-webpack-') +const { onAction, callAction } = api.namespace('com.my-name.') ``` In the client addon components (browser), you have access to `$onPluginActionCalled`, `$onPluginActionResolved` and `$callPluginAction`: @@ -927,7 +944,7 @@ export default { methods: { testPluginAction () { // Call a plugin action - this.$callPluginAction('test-action', { + this.$callPluginAction('com.my-name.test-action', { meow: 'meow' }) } @@ -952,7 +969,7 @@ const ipc = new IpcMessenger() function sendMessage (data) { // Send a message to the cli-ui server ipc.send({ - webpackDashboardData: { + 'com.my-name.some-data': { type: 'build', value: data } @@ -1007,7 +1024,7 @@ Connect to another IPC network: ```js const ipc = new IpcMessenger({ - networkId: 'my-ipc-network' + networkId: 'com.my-name.my-ipc-network' }) ``` @@ -1015,8 +1032,8 @@ In a vue-cli plugin `ui.js` file, you can use the `ipcOn`, `ipcOff` and `ipcSend ```js function onWebpackMessage ({ data: message }) { - if (message.webpackDashboardData) { - console.log(message.webpackDashboardData) + if (message['com.my-name.some-data']) { + console.log(message['com.my-name.some-data']) } } @@ -1040,10 +1057,10 @@ A plugin can save and load data from the local [lowdb](https://github.com/typico ```js // Store a value into the local DB -api.storageSet('my-plugin.an-id', { some: 'value' }) +api.storageSet('com.my-name.an-id', { some: 'value' }) // Retrieve a value from the local DB -console.log(api.storageGet('my-plugin.an-id')) +console.log(api.storageGet('com.my-name.an-id')) // Full lowdb instance api.db.get('posts') @@ -1055,6 +1072,10 @@ api.db.get('posts') const { storageGet, storageSet } = api.namespace('my-plugin.') ``` +::: danger +Make sure to namespace the ids correctly, since they must be unique across all plugins. It's recommended to use the [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation). +::: + ## Notification You can display notifications using the user OS notification system: @@ -1181,7 +1202,7 @@ Suggestions are buttons meant to propose an action to the user. They are display ```js api.addSuggestion({ - id: 'my-suggestion', + id: 'com.my-name.my-suggestion', type: 'action', // Required (more types in the future) label: 'Add vue-router', // This will be displayed in a details modal @@ -1200,19 +1221,23 @@ api.addSuggestion({ }) ``` +::: danger +Make sure to namespace the id correctly, since it must be unique across all plugins. It's recommended to use the [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation). +::: + ![UI Suggestion](/suggestion.png) Then you can remove the suggestion: ```js -api.removeSuggestion('my-suggestion') +api.removeSuggestion('com.my-name.my-suggestion') ``` You can also open a page instead when the user activates the suggestion with `actionLink`: ```js api.addSuggestion({ - id: 'my-suggestion', + id: 'com.my-name.my-suggestion', type: 'action', // Required label: 'Add vue-router', // Open a new tab @@ -1231,8 +1256,8 @@ api.onViewOpen(({ view }) => { api.addSuggestion({ id: ROUTER, type: 'action', - label: 'cli-service.suggestions.vue-router-add.label', - message: 'cli-service.suggestions.vue-router-add.message', + label: 'org.vue.cli-service.suggestions.vue-router-add.label', + message: 'org.vue.cli-service.suggestions.vue-router-add.message', link: 'https://router.vuejs.org/', async handler () { await install(api, 'vue-router') @@ -1291,12 +1316,12 @@ You may need to expose some static files over the cli-ui builtin HTTP server (ty Any file in an optional `ui-public` folder in the root of the plugin package folder will be exposed to the `/_plugin/:id/*` HTTP route. -For example, if you put a `my-logo.png` file into the `my-package/ui-public/` folder, it will be available with the `/_plugin/my-package/my-logo.png` URL when the cli-ui loads the plugin. +For example, if you put a `my-logo.png` file into the `vue-cli-plugin-hello/ui-public/` folder, it will be available with the `/_plugin/vue-cli-plugin-hello/my-logo.png` URL when the cli-ui loads the plugin. ```js api.describeConfig({ /* ... */ // Custom image - icon: '/_plugin/my-package/my-logo.png' + icon: '/_plugin/vue-cli-plugin-hello/my-logo.png' }) ``` diff --git a/docs/dev-guide/ui-localization.md b/docs/dev-guide/ui-localization.md index 0e46244e5b..77c956c880 100644 --- a/docs/dev-guide/ui-localization.md +++ b/docs/dev-guide/ui-localization.md @@ -34,14 +34,18 @@ Example usage in API: ```js api.describeConfig({ // vue-i18n path - description: 'my-plugin.config.foo' + description: 'com.my-name.my-plugin.config.foo' }) ``` +::: danger +Make sure to namespace the id correctly, since it must be unique across all plugins. It's recommended to use the [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation). +::: + Example usage in components: ```html -{{ $t('my-plugin.actions.bar') }} +{{ $t('com.my-name.my-plugin.actions.bar') }} ``` You can also load the locale files in a client addon if you prefer, using the `ClientAddonApi`: From 7d635008ac4784483e1fd792819c96ecbae2c6e1 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 21 Jun 2018 16:41:38 +0200 Subject: [PATCH 086/344] refactor(ui): use reverse domain notation for ids --- packages/@vue/cli-plugin-e2e-cypress/ui.js | 8 +- packages/@vue/cli-plugin-e2e-nightwatch/ui.js | 4 +- packages/@vue/cli-plugin-eslint/ui.js | 38 +- packages/@vue/cli-plugin-pwa/ui.js | 42 +- packages/@vue/cli-plugin-unit-jest/ui.js | 8 +- packages/@vue/cli-plugin-unit-mocha/ui.js | 4 +- .../src/components/AssetList.vue | 2 +- .../src/components/AssetListItem.vue | 2 +- .../src/components/BuildProgress.vue | 2 +- .../src/components/BuildStatus.vue | 20 +- .../src/components/ModuleList.vue | 2 +- .../src/components/SpeedStats.vue | 2 +- .../src/components/TestView.vue | 2 +- .../src/components/WebpackAnalyzer.vue | 24 +- .../src/components/WebpackDashboard.vue | 14 +- .../cli-ui-addon-webpack/src/locales/en.json | 8 +- .../src/mixins/Dashboard.js | 6 +- .../cli-ui-addon-webpack/src/store/index.js | 4 +- packages/@vue/cli-ui/locales/en.json | 1178 +++++++++-------- .../src/components/ConnectionStatus.vue | 4 +- .../@vue/cli-ui/src/components/FileDiff.vue | 4 +- .../cli-ui/src/components/FileDiffView.vue | 26 +- .../cli-ui/src/components/FolderExplorer.vue | 28 +- .../cli-ui/src/components/ListItemInfo.vue | 2 +- .../@vue/cli-ui/src/components/LoggerView.vue | 10 +- .../cli-ui/src/components/ProgressScreen.vue | 2 +- .../cli-ui/src/components/ProjectNavMore.vue | 6 +- .../src/components/ProjectPluginItem.vue | 10 +- .../src/components/ProjectSelectList.vue | 4 +- .../src/components/ProjectSelectListItem.vue | 4 +- .../@vue/cli-ui/src/components/PromptList.vue | 2 +- .../cli-ui/src/components/PromptsList.vue | 2 +- .../@vue/cli-ui/src/components/StatusBar.vue | 18 +- .../cli-ui/src/components/SuggestionBar.vue | 4 +- .../src/components/SuggestionBarItem.vue | 10 +- .../@vue/cli-ui/src/components/TaskItem.vue | 2 +- .../cli-ui/src/components/TerminalView.vue | 4 +- .../@vue/cli-ui/src/components/TopBar.vue | 6 +- .../src/graphql-api/connectors/projects.js | 10 +- .../src/graphql-api/connectors/tasks.js | 6 +- .../src/graphql-api/connectors/views.js | 6 +- packages/@vue/cli-ui/src/mixins/Progress.js | 2 +- packages/@vue/cli-ui/src/views/About.vue | 12 +- .../src/views/ProjectConfigurationDetails.vue | 10 +- .../src/views/ProjectConfigurations.vue | 4 +- .../@vue/cli-ui/src/views/ProjectCreate.vue | 102 +- .../@vue/cli-ui/src/views/ProjectPlugins.vue | 10 +- .../cli-ui/src/views/ProjectPluginsAdd.vue | 34 +- .../@vue/cli-ui/src/views/ProjectSelect.vue | 22 +- .../cli-ui/src/views/ProjectTaskDetails.vue | 22 +- .../@vue/cli-ui/src/views/ProjectTasks.vue | 4 +- packages/@vue/cli-ui/ui-defaults/config.js | 58 +- .../@vue/cli-ui/ui-defaults/suggestions.js | 20 +- packages/@vue/cli-ui/ui-defaults/tasks.js | 48 +- 54 files changed, 948 insertions(+), 940 deletions(-) diff --git a/packages/@vue/cli-plugin-e2e-cypress/ui.js b/packages/@vue/cli-plugin-e2e-cypress/ui.js index 0968a066e9..a4dc122073 100644 --- a/packages/@vue/cli-plugin-e2e-cypress/ui.js +++ b/packages/@vue/cli-plugin-e2e-cypress/ui.js @@ -1,14 +1,14 @@ module.exports = api => { api.describeTask({ match: /vue-cli-service test:e2e/, - description: 'cypress.tasks.test.description', + description: 'org.vue.cypress.tasks.test.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-e2e-cypress#injected-commands', prompts: [ { name: 'headless', type: 'confirm', default: false, - description: 'cypress.tasks.test.headless' + description: 'org.vue.cypress.tasks.test.headless' }, { name: 'mode', @@ -28,13 +28,13 @@ module.exports = api => { value: 'test' } ], - description: 'cypress.tasks.test.mode' + description: 'org.vue.cypress.tasks.test.mode' }, { name: 'url', type: 'input', default: '', - description: 'cypress.tasks.test.url' + description: 'org.vue.cypress.tasks.test.url' } ], onBeforeRun: ({ answers, args }) => { diff --git a/packages/@vue/cli-plugin-e2e-nightwatch/ui.js b/packages/@vue/cli-plugin-e2e-nightwatch/ui.js index f223d289d0..4629748586 100644 --- a/packages/@vue/cli-plugin-e2e-nightwatch/ui.js +++ b/packages/@vue/cli-plugin-e2e-nightwatch/ui.js @@ -1,14 +1,14 @@ module.exports = api => { api.describeTask({ match: /vue-cli-service test:e2e/, - description: 'nightwatch.tasks.test.description', + description: 'org.vue.nightwatch.tasks.test.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-e2e-nightwatch#injected-commands', prompts: [ { name: 'url', type: 'input', default: '', - description: 'nightwatch.tasks.test.url' + description: 'org.vue.nightwatch.tasks.test.url' } ], onBeforeRun: ({ answers, args }) => { diff --git a/packages/@vue/cli-plugin-eslint/ui.js b/packages/@vue/cli-plugin-eslint/ui.js index 8870888945..eb97da5e6d 100644 --- a/packages/@vue/cli-plugin-eslint/ui.js +++ b/packages/@vue/cli-plugin-eslint/ui.js @@ -1,11 +1,11 @@ module.exports = api => { - const CONFIG = 'eslintrc' + const CONFIG = 'org.vue.eslintrc' // Config file api.describeConfig({ id: CONFIG, name: 'ESLint configuration', - description: 'eslint.config.eslint.description', + description: 'org.vue.eslint.config.eslint.description', link: 'https://github.com/vuejs/eslint-plugin-vue', files: { eslint: { @@ -21,13 +21,13 @@ module.exports = api => { tabs: [ { id: 'vue', - label: 'eslint.config.eslint.vue.label', + label: 'org.vue.eslint.config.eslint.vue.label', prompts: [ { name: 'vue/attribute-hyphenation', type: 'list', message: 'Attribute hyphenation', - group: 'eslint.config.eslint.groups.strongly-recommended', + group: 'org.vue.eslint.config.eslint.groups.strongly-recommended', description: 'Enforce attribute naming style in template (`my-prop` or `myProp`)', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/attribute-hyphenation.md', default: JSON.stringify('off'), @@ -51,7 +51,7 @@ module.exports = api => { name: 'vue/html-end-tags', type: 'confirm', message: 'Template end tags style', - group: 'eslint.config.eslint.groups.strongly-recommended', + group: 'org.vue.eslint.config.eslint.groups.strongly-recommended', description: 'End tag on Void elements, end tags and self-closing opening tags', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-end-tags.md', default: false, @@ -63,7 +63,7 @@ module.exports = api => { name: 'vue/html-indent', type: 'list', message: 'Template indentation', - group: 'eslint.config.eslint.groups.strongly-recommended', + group: 'org.vue.eslint.config.eslint.groups.strongly-recommended', description: 'Enforce indentation in template', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-indent.md', default: JSON.stringify('off'), @@ -95,7 +95,7 @@ module.exports = api => { name: 'vue/html-self-closing', type: 'confirm', message: 'Template tag self-closing style', - group: 'eslint.config.eslint.groups.strongly-recommended', + group: 'org.vue.eslint.config.eslint.groups.strongly-recommended', description: 'Self-close any component or non-Void element tags', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md', default: false, @@ -107,7 +107,7 @@ module.exports = api => { name: 'vue/require-default-prop', type: 'confirm', message: 'Require default in required props', - group: 'eslint.config.eslint.groups.strongly-recommended', + group: 'org.vue.eslint.config.eslint.groups.strongly-recommended', description: 'This rule requires default value to be set for each props that are not marked as `required`', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-default-prop.md', default: false, @@ -119,7 +119,7 @@ module.exports = api => { name: 'vue/require-prop-types', type: 'confirm', message: 'Require types for props', - group: 'eslint.config.eslint.groups.strongly-recommended', + group: 'org.vue.eslint.config.eslint.groups.strongly-recommended', description: 'In committed code, prop definitions should always be as detailed as possible, specifying at least type(s)', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-prop-types.md', default: false, @@ -131,7 +131,7 @@ module.exports = api => { name: 'vue/attributes-order', type: 'confirm', message: 'Attribute order', - group: 'eslint.config.eslint.groups.recommended', + group: 'org.vue.eslint.config.eslint.groups.recommended', description: 'This rule aims to enforce ordering of component attributes (the default order is specified in the Vue style guide)', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/attributes-order.md', default: false, @@ -143,7 +143,7 @@ module.exports = api => { name: 'vue/html-quotes', type: 'list', message: 'Attribute quote style', - group: 'eslint.config.eslint.groups.recommended', + group: 'org.vue.eslint.config.eslint.groups.recommended', description: 'Enforce style of the attribute quotes in templates', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-quotes.md', default: JSON.stringify('off'), @@ -167,7 +167,7 @@ module.exports = api => { name: 'vue/order-in-components', type: 'confirm', message: 'Component options order', - group: 'eslint.config.eslint.groups.recommended', + group: 'org.vue.eslint.config.eslint.groups.recommended', description: 'This rule aims to enforce ordering of component options (the default order is specified in the Vue style guide)', link: 'https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/order-in-components.md', default: false, @@ -179,13 +179,13 @@ module.exports = api => { }, { id: 'extra', - label: 'eslint.config.eslint.extra.label', + label: 'org.vue.eslint.config.eslint.extra.label', prompts: [ { name: 'lintOnSave', type: 'confirm', - message: 'eslint.config.eslint.extra.lintOnSave.message', - description: 'eslint.config.eslint.extra.lintOnSave.description', + message: 'org.vue.eslint.config.eslint.extra.lintOnSave.message', + description: 'org.vue.eslint.config.eslint.extra.lintOnSave.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint#configuration', default: true, value: data.vue && data.vue.lintOnSave @@ -214,14 +214,14 @@ module.exports = api => { // Tasks api.describeTask({ match: /vue-cli-service lint/, - description: 'eslint.tasks.lint.description', + description: 'org.vue.eslint.tasks.lint.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint#injected-commands', prompts: [ { name: 'noFix', type: 'confirm', default: false, - description: 'eslint.tasks.lint.noFix' + description: 'org.vue.eslint.tasks.lint.noFix' } ], onBeforeRun: ({ answers, args }) => { @@ -229,7 +229,7 @@ module.exports = api => { } }) - const OPEN_ESLINTRC = 'vue-eslint-open-eslintrc' + const OPEN_ESLINTRC = 'org.vue.eslint.open-eslintrc' api.onViewOpen(({ view }) => { if (view.id !== 'vue-project-configurations') { @@ -242,7 +242,7 @@ module.exports = api => { api.addSuggestion({ id: OPEN_ESLINTRC, type: 'action', - label: 'eslint.suggestions.open-eslintrc.label', + label: 'org.vue.eslint.suggestions.open-eslintrc.label', handler () { const file = config.foundFiles.eslint.path console.log('open', file) diff --git a/packages/@vue/cli-plugin-pwa/ui.js b/packages/@vue/cli-plugin-pwa/ui.js index b6ed347dd9..b5c9239d72 100644 --- a/packages/@vue/cli-plugin-pwa/ui.js +++ b/packages/@vue/cli-plugin-pwa/ui.js @@ -1,11 +1,11 @@ module.exports = api => { - const CONFIG = 'pwa' + const CONFIG = 'org.vue.pwa' // Config file api.describeConfig({ id: CONFIG, name: 'PWA', - description: 'pwa.config.pwa.description', + description: 'org.vue.pwa.config.pwa.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa#configuration', files: { vue: { @@ -21,8 +21,8 @@ module.exports = api => { { name: 'workboxPluginMode', type: 'list', - message: 'pwa.config.pwa.workboxPluginMode.message', - description: 'pwa.config.pwa.workboxPluginMode.description', + message: 'org.vue.pwa.config.pwa.workboxPluginMode.message', + description: 'org.vue.pwa.config.pwa.workboxPluginMode.description', link: 'https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#which_plugin_to_use', default: 'GenerateSW', value: data.vue && data.vue.pwa && data.vue.pwa.workboxPluginMode, @@ -40,23 +40,23 @@ module.exports = api => { { name: 'name', type: 'input', - message: 'pwa.config.pwa.name.message', - description: 'pwa.config.pwa.name.description', + message: 'org.vue.pwa.config.pwa.name.message', + description: 'org.vue.pwa.config.pwa.name.description', value: data.vue && data.vue.pwa && data.vue.pwa.name }, { name: 'themeColor', type: 'color', - message: 'pwa.config.pwa.themeColor.message', - description: 'pwa.config.pwa.themeColor.description', + message: 'org.vue.pwa.config.pwa.themeColor.message', + description: 'org.vue.pwa.config.pwa.themeColor.description', default: '#4DBA87', value: data.vue && data.vue.pwa && data.vue.pwa.themeColor }, { name: 'backgroundColor', type: 'color', - message: 'pwa.config.pwa.backgroundColor.message', - description: 'pwa.config.pwa.backgroundColor.description', + message: 'org.vue.pwa.config.pwa.backgroundColor.message', + description: 'org.vue.pwa.config.pwa.backgroundColor.description', default: '#000000', value: data.manifest && data.manifest.background_color, skipSave: true @@ -64,16 +64,16 @@ module.exports = api => { { name: 'msTileColor', type: 'color', - message: 'pwa.config.pwa.msTileColor.message', - description: 'pwa.config.pwa.msTileColor.description', + message: 'org.vue.pwa.config.pwa.msTileColor.message', + description: 'org.vue.pwa.config.pwa.msTileColor.description', default: '#000000', value: data.vue && data.vue.pwa && data.vue.pwa.msTileColor }, { name: 'appleMobileWebAppStatusBarStyle', type: 'input', - message: 'pwa.config.pwa.appleMobileWebAppStatusBarStyle.message', - description: 'pwa.config.pwa.appleMobileWebAppStatusBarStyle.description', + message: 'org.vue.pwa.config.pwa.appleMobileWebAppStatusBarStyle.message', + description: 'org.vue.pwa.config.pwa.appleMobileWebAppStatusBarStyle.description', default: 'default', value: data.vue && data.vue.pwa && data.vue.pwa.appleMobileWebAppStatusBarStyle } @@ -83,13 +83,13 @@ module.exports = api => { onWrite: async ({ api, prompts, cwd }) => { const result = {} for (const prompt of prompts.filter(p => !p.raw.skipSave)) { - result[`pwa.${prompt.id}`] = await api.getAnswer(prompt.id) + result[`org.vue.pwa.${prompt.id}`] = await api.getAnswer(prompt.id) } api.setData('vue', result) // Update app manifest - const name = result['pwa.name'] + const name = result['org.vue.pwa.name'] if (name) { api.setData('manifest', { name, @@ -97,7 +97,7 @@ module.exports = api => { }) } - const themeColor = result['pwa.themeColor'] + const themeColor = result['org.vue.pwa.themeColor'] if (themeColor) { api.setData('manifest', { theme_color: themeColor @@ -113,8 +113,8 @@ module.exports = api => { } }) - const OPEN_VUE = 'vue-pwa-open-vue' - const OPEN_MANIFEST = 'vue-pwa-open-manifest' + const OPEN_VUE = 'org.vue.pwa.open-vue' + const OPEN_MANIFEST = 'org.vue.pwa.open-manifest' api.onViewOpen(({ view }) => { if (view.id !== 'vue-project-configurations') { @@ -128,7 +128,7 @@ module.exports = api => { api.addSuggestion({ id: OPEN_VUE, type: 'action', - label: 'pwa.suggestions.open-vue.label', + label: 'org.vue.pwa.suggestions.open-vue.label', handler () { const file = config.foundFiles.vue.path console.log('open', file) @@ -146,7 +146,7 @@ module.exports = api => { api.addSuggestion({ id: OPEN_MANIFEST, type: 'action', - label: 'pwa.suggestions.open-manifest.label', + label: 'org.vue.pwa.suggestions.open-manifest.label', handler () { const file = config.foundFiles.manifest.path console.log('open', file) diff --git a/packages/@vue/cli-plugin-unit-jest/ui.js b/packages/@vue/cli-plugin-unit-jest/ui.js index 34ab1612a9..2e78b008c7 100644 --- a/packages/@vue/cli-plugin-unit-jest/ui.js +++ b/packages/@vue/cli-plugin-unit-jest/ui.js @@ -1,24 +1,24 @@ module.exports = api => { api.describeTask({ match: /vue-cli-service test:unit/, - description: 'jest.tasks.test.description', + description: 'org.vue.jest.tasks.test.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-jest#injected-commands', prompts: [ { name: 'watch', type: 'confirm', - description: 'jest.tasks.test.watch' + description: 'org.vue.jest.tasks.test.watch' }, { name: 'notify', type: 'confirm', - description: 'jest.tasks.test.notify', + description: 'org.vue.jest.tasks.test.notify', when: answers => answers.watch }, { name: 'update', type: 'confirm', - description: 'jest.tasks.test.update' + description: 'org.vue.jest.tasks.test.update' } ], onBeforeRun: ({ answers, args }) => { diff --git a/packages/@vue/cli-plugin-unit-mocha/ui.js b/packages/@vue/cli-plugin-unit-mocha/ui.js index 3101db6d96..425126ad4b 100644 --- a/packages/@vue/cli-plugin-unit-mocha/ui.js +++ b/packages/@vue/cli-plugin-unit-mocha/ui.js @@ -1,14 +1,14 @@ module.exports = api => { api.describeTask({ match: /vue-cli-service test:unit/, - description: 'mocha.tasks.test.description', + description: 'org.vue.mocha.tasks.test.description', link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-mocha#injected-commands', prompts: [ { name: 'watch', type: 'confirm', default: false, - description: 'mocha.tasks.test.watch' + description: 'org.vue.mocha.tasks.test.watch' } ], onBeforeRun: ({ answers, args }) => { diff --git a/packages/@vue/cli-ui-addon-webpack/src/components/AssetList.vue b/packages/@vue/cli-ui-addon-webpack/src/components/AssetList.vue index 45f75394c1..643e95571a 100644 --- a/packages/@vue/cli-ui-addon-webpack/src/components/AssetList.vue +++ b/packages/@vue/cli-ui-addon-webpack/src/components/AssetList.vue @@ -2,7 +2,7 @@
- {{ $t('vue-webpack.dashboard.asset-list.title') }} + {{ $t('org.vue.vue-webpack.dashboard.asset-list.title') }}
diff --git a/packages/@vue/cli-ui-addon-webpack/src/components/BuildProgress.vue b/packages/@vue/cli-ui-addon-webpack/src/components/BuildProgress.vue index 270e087a3d..3f09d0893e 100644 --- a/packages/@vue/cli-ui-addon-webpack/src/components/BuildProgress.vue +++ b/packages/@vue/cli-ui-addon-webpack/src/components/BuildProgress.vue @@ -50,7 +50,7 @@ export default { }, sharedData () { - return mapSharedData('webpack-dashboard-', { + return mapSharedData('org.vue.webpack.', { status: `${this.mode}-status`, progress: `${this.mode}-progress`, operations: `${this.mode}-operations` diff --git a/packages/@vue/cli-ui-addon-webpack/src/components/BuildStatus.vue b/packages/@vue/cli-ui-addon-webpack/src/components/BuildStatus.vue index e1626f3c6a..faced69dc2 100644 --- a/packages/@vue/cli-ui-addon-webpack/src/components/BuildStatus.vue +++ b/packages/@vue/cli-ui-addon-webpack/src/components/BuildStatus.vue @@ -3,47 +3,47 @@
- {{ $t('vue-webpack.dashboard.build-status.labels.status') }} + {{ $t('org.vue.vue-webpack.dashboard.build-status.labels.status') }}
-
{{ $t(`vue-webpack.dashboard.webpack-status.${status || 'Idle'}`) }}
+
{{ $t(`org.vue.vue-webpack.dashboard.webpack-status.${status || 'Idle'}`) }}
- {{ $t('vue-webpack.dashboard.build-status.labels.errors') }} + {{ $t('org.vue.vue-webpack.dashboard.build-status.labels.errors') }}
{{ errors.length }}
- {{ $t('vue-webpack.dashboard.build-status.labels.warnings') }} + {{ $t('org.vue.vue-webpack.dashboard.build-status.labels.warnings') }}
{{ warnings.length }}
- {{ $t('vue-webpack.dashboard.build-status.labels.assets') }} + {{ $t('org.vue.vue-webpack.dashboard.build-status.labels.assets') }}
{{ assetsTotalSize | size('B') }} - ({{ $t(`vue-webpack.sizes.${sizeField}`) }}) + ({{ $t(`org.vue.vue-webpack.sizes.${sizeField}`) }})
- {{ $t('vue-webpack.dashboard.build-status.labels.modules') }} + {{ $t('org.vue.vue-webpack.dashboard.build-status.labels.modules') }}
{{ modulesTotalSize | size('B') }} - ({{ $t(`vue-webpack.sizes.${sizeField}`) }}) + ({{ $t(`org.vue.vue-webpack.sizes.${sizeField}`) }})
- {{ $t('vue-webpack.dashboard.build-status.labels.deps') }} + {{ $t('org.vue.vue-webpack.dashboard.build-status.labels.deps') }}
{{ depModulesTotalSize | size('B') }} @@ -88,7 +88,7 @@ export default { sharedData () { return { - status: `webpack-dashboard-${this.mode}-status` + status: `org.vue.webpack.${this.mode}-status` } } } diff --git a/packages/@vue/cli-ui-addon-webpack/src/components/ModuleList.vue b/packages/@vue/cli-ui-addon-webpack/src/components/ModuleList.vue index 37a6bf961d..8ad0845793 100644 --- a/packages/@vue/cli-ui-addon-webpack/src/components/ModuleList.vue +++ b/packages/@vue/cli-ui-addon-webpack/src/components/ModuleList.vue @@ -2,7 +2,7 @@
- {{ $t('vue-webpack.dashboard.module-list.title') }} + {{ $t('org.vue.vue-webpack.dashboard.module-list.title') }}
- {{ $t('vue-webpack.dashboard.speed-stats.title') }} + {{ $t('org.vue.vue-webpack.dashboard.speed-stats.title') }}
-

{{ $t('vue-webpack.test-view') }}

+

{{ $t('org.vue.vue-webpack.test-view') }}

A vue-cli plugin created me! I am a dynamically loaded component paired with a custom route.

-
{{ $t('vue-webpack.analyzer.title') }}
+
{{ $t('org.vue.vue-webpack.analyzer.title') }}
- {{ $t('vue-webpack.modern-mode') }} + {{ $t('org.vue.vue-webpack.modern-mode') }} diff --git a/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue b/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue index ba0bf5ed98..3400229ee0 100644 --- a/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue +++ b/packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue @@ -5,7 +5,7 @@ @@ -20,7 +20,7 @@ diff --git a/packages/@vue/cli-ui/src/components/PromptList.vue b/packages/@vue/cli-ui/src/components/PromptList.vue index c86a5cc970..0125240ace 100644 --- a/packages/@vue/cli-ui/src/components/PromptList.vue +++ b/packages/@vue/cli-ui/src/components/PromptList.vue @@ -39,7 +39,7 @@ export default { generateLabel (choice) { let label = this.$t(choice.name) if (choice.isDefault) { - label += ` (${this.$t('components.prompt-list.default')})` + label += ` (${this.$t('org.vue.components.prompt-list.default')})` } return label } diff --git a/packages/@vue/cli-ui/src/components/PromptsList.vue b/packages/@vue/cli-ui/src/components/PromptsList.vue index e13eae1a01..a03402ebd7 100644 --- a/packages/@vue/cli-ui/src/components/PromptsList.vue +++ b/packages/@vue/cli-ui/src/components/PromptsList.vue @@ -20,7 +20,7 @@
- {{ $t('components.prompts-list.empty') }} + {{ $t('org.vue.components.prompts-list.empty') }}
diff --git a/packages/@vue/cli-ui/src/components/StatusBar.vue b/packages/@vue/cli-ui/src/components/StatusBar.vue index c377e3dd1f..16ab40766a 100644 --- a/packages/@vue/cli-ui/src/components/StatusBar.vue +++ b/packages/@vue/cli-ui/src/components/StatusBar.vue @@ -8,17 +8,17 @@
- {{ $t('components.status-bar.project.empty') }} + {{ $t('org.vue.components.status-bar.project.empty') }}
@@ -44,13 +44,13 @@ v-if="consoleLogLast" :message="consoleLogLast" /> -
{{ $t('components.status-bar.log.empty') }}
+
{{ $t('org.vue.components.status-bar.log.empty') }}
@@ -58,21 +58,21 @@
diff --git a/packages/@vue/cli-ui/src/components/SuggestionBar.vue b/packages/@vue/cli-ui/src/components/SuggestionBar.vue index 9c4f709067..e2bd3a2dc2 100644 --- a/packages/@vue/cli-ui/src/components/SuggestionBar.vue +++ b/packages/@vue/cli-ui/src/components/SuggestionBar.vue @@ -76,8 +76,8 @@ export default { { id: 'vue-devtools', type: 'action', - label: 'cli-service.suggestions.vue-devtools.label', - message: 'cli-service.suggestions.vue-devtools.message', + label: 'org.vue.cli-service.suggestions.vue-devtools.label', + message: 'org.vue.cli-service.suggestions.vue-devtools.message', link: 'https://github.com/vuejs/vue-devtools', image: 'https://raw.githubusercontent.com/vuejs/vue-devtools/master/media/screenshot.png', actionLink: devtoolsLink diff --git a/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue b/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue index f1632e24a4..8e3c65ba2e 100644 --- a/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue +++ b/packages/@vue/cli-ui/src/components/SuggestionBarItem.vue @@ -14,7 +14,7 @@ :label="$t(suggestion.label)" :loading="suggestion.busy" class="round" - v-tooltip="$t('components.suggestion-bar.suggestion')" + v-tooltip="$t('org.vue.components.suggestion-bar.suggestion')" @click="onTriggerClick()" /> @@ -39,20 +39,20 @@
diff --git a/packages/@vue/cli-ui/src/components/TopBar.vue b/packages/@vue/cli-ui/src/components/TopBar.vue index 8088eef888..046235e44d 100644 --- a/packages/@vue/cli-ui/src/components/TopBar.vue +++ b/packages/@vue/cli-ui/src/components/TopBar.vue @@ -2,7 +2,7 @@
-
{{ $t('components.top-bar.no-favorites') }}
+
{{ $t('org.vue.components.top-bar.no-favorites') }}