diff --git a/packages/@vue/cli/__tests__/Generator.spec.js b/packages/@vue/cli/__tests__/Generator.spec.js index 2e1f08ba1..38fa535bc 100644 --- a/packages/@vue/cli/__tests__/Generator.spec.js +++ b/packages/@vue/cli/__tests__/Generator.spec.js @@ -4,7 +4,7 @@ const fs = require('fs-extra') const path = require('path') const Generator = require('../lib/Generator') const { logs } = require('@vue/cli-shared-utils') -const stringifyJS = require('javascript-stringify') +const stringifyJS = require('../util/stringifyJS') // prepare template fixtures const templateDir = path.resolve(__dirname, 'template') diff --git a/packages/@vue/cli/__tests__/invoke.spec.js b/packages/@vue/cli/__tests__/invoke.spec.js index 993eb14b5..9430b601b 100644 --- a/packages/@vue/cli/__tests__/invoke.spec.js +++ b/packages/@vue/cli/__tests__/invoke.spec.js @@ -11,6 +11,15 @@ const parseJS = file => { return res.exports } +const baseESLintConfig = Object.assign({}, require('@vue/cli-plugin-eslint/eslintOptions').config({ + hasPlugin: () => false +}), { + rules: { + 'no-console': 'off', + 'no-debugger': 'off' + } +}) + async function createAndInstall (name) { const project = await create(name, { plugins: { @@ -33,10 +42,9 @@ async function assertUpdates (project) { }) const eslintrc = parseJS(await project.read('.eslintrc.js')) - expect(eslintrc).toEqual({ - root: true, + expect(eslintrc).toEqual(Object.assign({}, baseESLintConfig, { extends: ['plugin:vue/essential', '@vue/airbnb'] - }) + })) const lintedMain = await project.read('src/main.js') expect(lintedMain).toMatch(';') // should've been linted in post-generate hook @@ -85,10 +93,9 @@ test('invoke with existing files', async () => { await project.write('vue.config.js', `module.exports = { lintOnSave: true }`) const eslintrc = parseJS(await project.read('.eslintrc.js')) - expect(eslintrc).toEqual({ - root: true, + expect(eslintrc).toEqual(Object.assign({}, baseESLintConfig, { extends: ['plugin:vue/essential', 'eslint:recommended'] - }) + })) await project.run(`${require.resolve('../bin/vue')} invoke eslint --config airbnb --lintOn commit`) @@ -111,10 +118,9 @@ test('invoke with existing files (yaml)', async () => { await project.write('package.json', JSON.stringify(pkg, null, 2)) const eslintrc = parseJS(await project.read('.eslintrc.js')) - expect(eslintrc).toEqual({ - root: true, + expect(eslintrc).toEqual(Object.assign({}, baseESLintConfig, { extends: ['plugin:vue/essential', 'eslint:recommended'] - }) + })) await project.rm(`.eslintrc.js`) await project.write(`.eslintrc.yml`, ` @@ -128,10 +134,9 @@ extends: const updated = await project.read('.eslintrc.yml') expect(updated).toMatch(` -root: true extends: - 'plugin:vue/essential' - - '@vue/airbnb' + - 'eslint:recommended' `.trim()) }) diff --git a/packages/@vue/cli/lib/GeneratorAPI.js b/packages/@vue/cli/lib/GeneratorAPI.js index e37bfa598..386040ebe 100644 --- a/packages/@vue/cli/lib/GeneratorAPI.js +++ b/packages/@vue/cli/lib/GeneratorAPI.js @@ -7,7 +7,7 @@ const resolve = require('resolve') const isBinary = require('isbinaryfile') const yaml = require('yaml-front-matter') const mergeDeps = require('./util/mergeDeps') -const stringifyJS = require('javascript-stringify') +const stringifyJS = require('./util/stringifyJS') const { getPluginLink, toShortPluginId } = require('@vue/cli-shared-utils') const isString = val => typeof val === 'string' diff --git a/packages/@vue/cli/lib/util/configTransforms.js b/packages/@vue/cli/lib/util/configTransforms.js index 24efb354c..0e91b6587 100644 --- a/packages/@vue/cli/lib/util/configTransforms.js +++ b/packages/@vue/cli/lib/util/configTransforms.js @@ -1,16 +1,7 @@ const fs = require('fs') const path = require('path') const extendJSConfig = require('./extendJSConfig') -const stringify = require('javascript-stringify') - -function stringifyJS (value) { - return stringify(value, (val, indent, stringify) => { - if (val && val.__expression) { - return val.__expression - } - return stringify(val) - }, 2) -} +const stringifyJS = require('./stringifyJS') function makeJSTransform (filename) { return function transformToJS (value, checkExisting, context) { diff --git a/packages/@vue/cli/lib/util/extendJSConfig.js b/packages/@vue/cli/lib/util/extendJSConfig.js index fbf77336e..1559b853f 100644 --- a/packages/@vue/cli/lib/util/extendJSConfig.js +++ b/packages/@vue/cli/lib/util/extendJSConfig.js @@ -1,6 +1,6 @@ module.exports = function extendJSConfig (value, source) { const recast = require('recast') - const stringifyJS = require('javascript-stringify') + const stringifyJS = require('./stringifyJS') let exportsIdentifier = null diff --git a/packages/@vue/cli/lib/util/stringifyJS.js b/packages/@vue/cli/lib/util/stringifyJS.js new file mode 100644 index 000000000..18e6da3ff --- /dev/null +++ b/packages/@vue/cli/lib/util/stringifyJS.js @@ -0,0 +1,10 @@ +const stringify = require('javascript-stringify') + +module.exports = function stringifyJS (value) { + return stringify(value, (val, indent, stringify) => { + if (val && val.__expression) { + return val.__expression + } + return stringify(val) + }, 2) +}