fix: stringifyJS should be used in all call sites

This commit is contained in:
Evan You
2018-05-18 18:49:58 -04:00
parent 83f5f4fced
commit 07ac887486
6 changed files with 30 additions and 24 deletions

View File

@@ -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')

View File

@@ -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())
})

View File

@@ -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'

View File

@@ -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) {

View File

@@ -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

View 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)
}