From eaa2b7341f174260f6ebc2345bd8e838f85a2ea3 Mon Sep 17 00:00:00 2001 From: Yingya Zhang Date: Thu, 9 Jan 2020 20:19:06 +0800 Subject: [PATCH] feat: respect existing package.json (#4827) --- packages/@vue/cli-service/lib/Service.js | 18 +++++++----------- packages/@vue/cli-service/package.json | 1 - packages/@vue/cli-shared-utils/index.js | 1 + packages/@vue/cli-shared-utils/lib/pkg.js | 10 ++++++++++ packages/@vue/cli-shared-utils/package.json | 1 + packages/@vue/cli/lib/Creator.js | 4 +++- yarn.lock | 8 ++++---- 7 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 packages/@vue/cli-shared-utils/lib/pkg.js diff --git a/packages/@vue/cli-service/lib/Service.js b/packages/@vue/cli-service/lib/Service.js index 9f3436b2a0..43e01096a7 100644 --- a/packages/@vue/cli-service/lib/Service.js +++ b/packages/@vue/cli-service/lib/Service.js @@ -1,14 +1,13 @@ const fs = require('fs') const path = require('path') const debug = require('debug') -const readPkg = require('read-pkg') const merge = require('webpack-merge') const Config = require('webpack-chain') const PluginAPI = require('./PluginAPI') const dotenv = require('dotenv') const dotenvExpand = require('dotenv-expand') const defaultsDeep = require('lodash.defaultsdeep') -const { chalk, warn, error, isPlugin, resolvePluginId, loadModule } = require('@vue/cli-shared-utils') +const { chalk, warn, error, isPlugin, resolvePluginId, loadModule, resolvePkg } = require('@vue/cli-shared-utils') const { defaults, validate } = require('./options') @@ -44,16 +43,13 @@ module.exports = class Service { resolvePkg (inlinePkg, context = this.context) { if (inlinePkg) { return inlinePkg - } else if (fs.existsSync(path.join(context, 'package.json'))) { - const pkg = readPkg.sync({ cwd: context }) - if (pkg.vuePlugins && pkg.vuePlugins.resolveFrom) { - this.pkgContext = path.resolve(context, pkg.vuePlugins.resolveFrom) - return this.resolvePkg(null, this.pkgContext) - } - return pkg - } else { - return {} } + const pkg = resolvePkg(context) + if (pkg.vuePlugins && pkg.vuePlugins.resolveFrom) { + this.pkgContext = path.resolve(context, pkg.vuePlugins.resolveFrom) + return this.resolvePkg(null, this.pkgContext) + } + return pkg } init (mode = process.env.VUE_CLI_MODE) { diff --git a/packages/@vue/cli-service/package.json b/packages/@vue/cli-service/package.json index e2f2020109..02fb2cd38a 100644 --- a/packages/@vue/cli-service/package.json +++ b/packages/@vue/cli-service/package.json @@ -63,7 +63,6 @@ "minimist": "^1.2.0", "portfinder": "^1.0.25", "postcss-loader": "^3.0.0", - "read-pkg": "^5.1.1", "ssri": "^7.1.0", "terser-webpack-plugin": "^2.2.1", "thread-loader": "^2.1.3", diff --git a/packages/@vue/cli-shared-utils/index.js b/packages/@vue/cli-shared-utils/index.js index ab1213441d..0637b56486 100644 --- a/packages/@vue/cli-shared-utils/index.js +++ b/packages/@vue/cli-shared-utils/index.js @@ -6,6 +6,7 @@ 'module', 'object', 'openBrowser', + 'pkg', 'pluginResolution', 'launch', 'request', diff --git a/packages/@vue/cli-shared-utils/lib/pkg.js b/packages/@vue/cli-shared-utils/lib/pkg.js new file mode 100644 index 0000000000..85dc2f7540 --- /dev/null +++ b/packages/@vue/cli-shared-utils/lib/pkg.js @@ -0,0 +1,10 @@ +const fs = require('fs') +const path = require('path') +const readPkg = require('read-pkg') + +exports.resolvePkg = function (context) { + if (fs.existsSync(path.join(context, 'package.json'))) { + return readPkg.sync({ cwd: context }) + } + return {} +} diff --git a/packages/@vue/cli-shared-utils/package.json b/packages/@vue/cli-shared-utils/package.json index d9d39cf0c5..c65a827a45 100644 --- a/packages/@vue/cli-shared-utils/package.json +++ b/packages/@vue/cli-shared-utils/package.json @@ -28,6 +28,7 @@ "node-ipc": "^9.1.1", "open": "^6.3.0", "ora": "^3.4.0", + "read-pkg": "^5.1.1", "request": "^2.87.0", "request-promise-native": "^1.0.8", "semver": "^6.1.0", diff --git a/packages/@vue/cli/lib/Creator.js b/packages/@vue/cli/lib/Creator.js index e965ae1a87..aaab7c8133 100644 --- a/packages/@vue/cli/lib/Creator.js +++ b/packages/@vue/cli/lib/Creator.js @@ -14,6 +14,7 @@ const { formatFeatures } = require('./util/features') const loadLocalPreset = require('./util/loadLocalPreset') const loadRemotePreset = require('./util/loadRemotePreset') const generateReadme = require('./util/generateReadme') +const { resolvePkg } = require('@vue/cli-shared-utils') const { defaults, @@ -146,7 +147,8 @@ module.exports = class Creator extends EventEmitter { name, version: '0.1.0', private: true, - devDependencies: {} + devDependencies: {}, + ...resolvePkg(context) } const deps = Object.keys(preset.plugins) deps.forEach(dep => { diff --git a/yarn.lock b/yarn.lock index 3ef921bbb2..58056f8530 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7045,7 +7045,7 @@ errorhandler@^1.5.1: accepts "~1.3.7" escape-html "~1.0.3" -es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== @@ -7257,7 +7257,7 @@ eslint-plugin-vue-libs@^4.0.0: babel-eslint "^10.0.1" eslint-plugin-vue "^5.1.0" -eslint-plugin-vue@^5.1.0, eslint-plugin-vue@^5.2.2: +eslint-plugin-vue@^5.0.0, eslint-plugin-vue@^5.1.0, eslint-plugin-vue@^5.2.2: version "5.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961" integrity sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw== @@ -8277,7 +8277,7 @@ ftp@~0.3.10: readable-stream "1.1.x" xregexp "2.0.0" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -14839,7 +14839,7 @@ request-promise@^4.2.4: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@2.88.0, request@^2.67.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: +request@2.88.0, request@^2.67.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==