mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-03-13 12:40:18 -05:00
fix: stringifyJS should be used in all call sites
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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())
|
||||
})
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
10
packages/@vue/cli/lib/util/stringifyJS.js
Normal file
10
packages/@vue/cli/lib/util/stringifyJS.js
Normal file
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user