diff --git a/packages/@vue/cli/lib/Creator.js b/packages/@vue/cli/lib/Creator.js index 50ab76c4d7..52501df34e 100644 --- a/packages/@vue/cli/lib/Creator.js +++ b/packages/@vue/cli/lib/Creator.js @@ -1,8 +1,10 @@ +const fs = require('fs') const path = require('path') const chalk = require('chalk') const debug = require('debug') const execa = require('execa') const inquirer = require('inquirer') +const readPkg = require('read-pkg') const semver = require('semver') const EventEmitter = require('events') const Generator = require('./Generator') @@ -139,12 +141,7 @@ module.exports = class Creator extends EventEmitter { latestMinor = current } // generate package.json with plugin dependencies - const pkg = { - name, - version: '0.1.0', - private: true, - devDependencies: {} - } + const pkg = this.resolvePkg() const deps = Object.keys(preset.plugins) deps.forEach(dep => { if (preset.plugins[dep]._isPreset) { @@ -512,6 +509,22 @@ module.exports = class Creator extends EventEmitter { return prompts } + resolvePkg () { + let existingPkg = {} + if (fs.existsSync(path.join(this.context, 'package.json'))) { + existingPkg = readPkg.sync({ cwd: this.context }) + } + const { name, version, devDependencies, ...more } = existingPkg + const pkg = { + name: name || this.name, + version: version || '0.1.0', + private: true, + devDependencies: devDependencies || {}, + ...more + } + return pkg + } + shouldInitGit (cliOptions) { if (!hasGit()) { return false diff --git a/packages/@vue/cli/package.json b/packages/@vue/cli/package.json index 478a37f9e8..1b115792dd 100644 --- a/packages/@vue/cli/package.json +++ b/packages/@vue/cli/package.json @@ -50,6 +50,7 @@ "lodash.clonedeep": "^4.5.0", "lru-cache": "^5.1.1", "minimist": "^1.2.0", + "read-pkg": "^5.1.1", "recast": "^0.18.1", "request": "^2.87.0", "request-promise-native": "^1.0.7",