From 74321f36e0cc62918667c2c3b902d2002408970b Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Tue, 31 Aug 2021 16:11:47 +0800 Subject: [PATCH 1/7] feat: generate projects with `transpileDependencies: true` by default --- .../__tests__/transpileDependencies.spec.js | 1 + packages/@vue/cli-plugin-babel/generator.js | 3 +++ packages/@vue/cli/lib/Generator.js | 6 ++---- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js b/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js index 21f3d349a0..eb81f2e633 100644 --- a/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js +++ b/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js @@ -77,6 +77,7 @@ afterAll(async () => { }) test('dep from node_modules should not been transpiled by default', async () => { + await project.write('vue.config.js', `module.exports = {}`) await project.run('vue-cli-service build') expect(await readLegacyVendorFile()).toMatch('() => "__TEST__"') }) diff --git a/packages/@vue/cli-plugin-babel/generator.js b/packages/@vue/cli-plugin-babel/generator.js index 2607f54233..a33390b0d7 100644 --- a/packages/@vue/cli-plugin-babel/generator.js +++ b/packages/@vue/cli-plugin-babel/generator.js @@ -9,6 +9,9 @@ module.exports = api => { babel: { presets: ['@vue/cli-plugin-babel/preset'] }, + vue: { + transpileDependencies: true + }, dependencies: { 'core-js': '^3.8.3' } diff --git a/packages/@vue/cli/lib/Generator.js b/packages/@vue/cli/lib/Generator.js index 5b26ee78cc..e8e8ac0a27 100644 --- a/packages/@vue/cli/lib/Generator.js +++ b/packages/@vue/cli/lib/Generator.js @@ -240,10 +240,8 @@ module.exports = class Generator { extract(key) } } else { - if (!process.env.VUE_CLI_TEST) { - // by default, always extract vue.config.js - extract('vue') - } + // by default, always extract vue.config.js + extract('vue') // always extract babel.config.js as this is the only way to apply // project-wide configuration even to dependencies. // TODO: this can be removed when Babel supports root: true in package.json From 35cf094fadf8b249a42553bc2d0dfb07fee2434b Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Tue, 31 Aug 2021 17:16:44 +0800 Subject: [PATCH 2/7] test: fix eslint generator tests --- .../__tests__/eslintGenerator.spec.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js b/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js index 7996cde448..791ec9a008 100644 --- a/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js +++ b/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js @@ -135,7 +135,7 @@ test('typescript', async () => { }) test('lint on save', async () => { - const { pkg } = await generateWithPlugin({ + const { files } = await generateWithPlugin({ id: 'eslint', apply: require('../generator'), options: { @@ -143,11 +143,11 @@ test('lint on save', async () => { } }) // lintOnSave defaults to true so no need for the vue config - expect(pkg.vue).toBeFalsy() + expect(files['vue.config.js']).toBeUndefined() }) test('lint on commit', async () => { - const { pkg } = await generateWithPlugin({ + const { pkg, files } = await generateWithPlugin({ id: 'eslint', apply: require('../generator'), options: { @@ -159,9 +159,7 @@ test('lint on commit', async () => { expect(pkg['lint-staged']).toEqual({ '*.{js,jsx,vue}': 'vue-cli-service lint' }) - expect(pkg.vue).toEqual({ - lintOnSave: false - }) + expect(files['vue.config.js']).toMatch('lintOnSave: false') }) test('should lint ts files when typescript plugin co-exists', async () => { From bce0adcfdd6565387b5c574330c54b8505fb0b1c Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Thu, 2 Sep 2021 12:58:46 +0800 Subject: [PATCH 3/7] test: generate test projects without babel plugin The babel plugin now creates a `vue.config.js` by default, which interferes with later test cases --- .../@vue/cli-service/__tests__/ServiceESM.spec.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/__tests__/ServiceESM.spec.js b/packages/@vue/cli-service/__tests__/ServiceESM.spec.js index 92014eafdb..080d7364ea 100644 --- a/packages/@vue/cli-service/__tests__/ServiceESM.spec.js +++ b/packages/@vue/cli-service/__tests__/ServiceESM.spec.js @@ -2,13 +2,21 @@ jest.setTimeout(200000) const path = require('path') const fs = require('fs-extra') -const { defaultPreset } = require('@vue/cli/lib/options') const create = require('@vue/cli-test-utils/createTestProject') const { loadModule } = require('@vue/cli-shared-utils') let project beforeAll(async () => { - project = await create('service-esm-test', defaultPreset) + project = await create('service-esm-test', { + useConfigFiles: false, + cssPreprocessor: undefined, + plugins: { + '@vue/cli-plugin-eslint': { + config: 'base', + lintOn: ['save'] + } + } + }) const pkg = JSON.parse(await project.read('package.json')) pkg.type = 'module' pkg.vue = { lintOnSave: 'default' } From a094b6e4e799272aabf9cbe0ae5fd0d1e953b593 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Thu, 2 Sep 2021 13:59:56 +0800 Subject: [PATCH 4/7] fixup! test: generate test projects without babel plugin --- packages/@vue/cli-service/__tests__/ServiceESM.spec.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/@vue/cli-service/__tests__/ServiceESM.spec.js b/packages/@vue/cli-service/__tests__/ServiceESM.spec.js index 080d7364ea..b28131efa3 100644 --- a/packages/@vue/cli-service/__tests__/ServiceESM.spec.js +++ b/packages/@vue/cli-service/__tests__/ServiceESM.spec.js @@ -21,7 +21,6 @@ beforeAll(async () => { pkg.type = 'module' pkg.vue = { lintOnSave: 'default' } await project.write('package.json', JSON.stringify(pkg, null, 2)) - fs.renameSync(path.resolve(project.dir, 'babel.config.js'), path.resolve(project.dir, 'babel.config.cjs')) }) const createService = async () => { From 170945b629d75e66b782483a56e13e1c103c6273 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Fri, 3 Sep 2021 10:39:43 +0800 Subject: [PATCH 5/7] Revert test-related changes Revert "fixup! test: generate test projects without babel plugin" This reverts commit a094b6e4e799272aabf9cbe0ae5fd0d1e953b593. Revert "test: generate test projects without babel plugin" This reverts commit bce0adcfdd6565387b5c574330c54b8505fb0b1c. Revert "test: fix eslint generator tests" This reverts commit 35cf094fadf8b249a42553bc2d0dfb07fee2434b. --- .../__tests__/eslintGenerator.spec.js | 10 ++++++---- .../@vue/cli-service/__tests__/ServiceESM.spec.js | 13 +++---------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js b/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js index 791ec9a008..7996cde448 100644 --- a/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js +++ b/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js @@ -135,7 +135,7 @@ test('typescript', async () => { }) test('lint on save', async () => { - const { files } = await generateWithPlugin({ + const { pkg } = await generateWithPlugin({ id: 'eslint', apply: require('../generator'), options: { @@ -143,11 +143,11 @@ test('lint on save', async () => { } }) // lintOnSave defaults to true so no need for the vue config - expect(files['vue.config.js']).toBeUndefined() + expect(pkg.vue).toBeFalsy() }) test('lint on commit', async () => { - const { pkg, files } = await generateWithPlugin({ + const { pkg } = await generateWithPlugin({ id: 'eslint', apply: require('../generator'), options: { @@ -159,7 +159,9 @@ test('lint on commit', async () => { expect(pkg['lint-staged']).toEqual({ '*.{js,jsx,vue}': 'vue-cli-service lint' }) - expect(files['vue.config.js']).toMatch('lintOnSave: false') + expect(pkg.vue).toEqual({ + lintOnSave: false + }) }) test('should lint ts files when typescript plugin co-exists', async () => { diff --git a/packages/@vue/cli-service/__tests__/ServiceESM.spec.js b/packages/@vue/cli-service/__tests__/ServiceESM.spec.js index b28131efa3..92014eafdb 100644 --- a/packages/@vue/cli-service/__tests__/ServiceESM.spec.js +++ b/packages/@vue/cli-service/__tests__/ServiceESM.spec.js @@ -2,25 +2,18 @@ jest.setTimeout(200000) const path = require('path') const fs = require('fs-extra') +const { defaultPreset } = require('@vue/cli/lib/options') const create = require('@vue/cli-test-utils/createTestProject') const { loadModule } = require('@vue/cli-shared-utils') let project beforeAll(async () => { - project = await create('service-esm-test', { - useConfigFiles: false, - cssPreprocessor: undefined, - plugins: { - '@vue/cli-plugin-eslint': { - config: 'base', - lintOn: ['save'] - } - } - }) + project = await create('service-esm-test', defaultPreset) const pkg = JSON.parse(await project.read('package.json')) pkg.type = 'module' pkg.vue = { lintOnSave: 'default' } await project.write('package.json', JSON.stringify(pkg, null, 2)) + fs.renameSync(path.resolve(project.dir, 'babel.config.js'), path.resolve(project.dir, 'babel.config.cjs')) }) const createService = async () => { From adc3a15d7fb49cce83a4a1c4ed027d06c5e39bf0 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Fri, 3 Sep 2021 10:56:45 +0800 Subject: [PATCH 6/7] test: fix tests (in a more restricted way) --- .../cli-plugin-babel/__tests__/transpileDependencies.spec.js | 2 +- .../@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js | 4 +--- packages/@vue/cli/lib/Generator.js | 5 ++++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js b/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js index eb81f2e633..a0aef17d45 100644 --- a/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js +++ b/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js @@ -49,6 +49,7 @@ beforeAll(async () => { $packageJson.browserslist.push('safari 11') // to ensure optional chaining transformation is enabled $packageJson.dependencies['external-dep'] = '1.0.0' $packageJson.dependencies['@scope/external-dep'] = '1.0.0' + delete $packageJson.vue $packageJson = JSON.stringify($packageJson) await project.write( @@ -77,7 +78,6 @@ afterAll(async () => { }) test('dep from node_modules should not been transpiled by default', async () => { - await project.write('vue.config.js', `module.exports = {}`) await project.run('vue-cli-service build') expect(await readLegacyVendorFile()).toMatch('() => "__TEST__"') }) diff --git a/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js b/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js index 7996cde448..e4a9f8a58d 100644 --- a/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js +++ b/packages/@vue/cli-plugin-eslint/__tests__/eslintGenerator.spec.js @@ -159,9 +159,7 @@ test('lint on commit', async () => { expect(pkg['lint-staged']).toEqual({ '*.{js,jsx,vue}': 'vue-cli-service lint' }) - expect(pkg.vue).toEqual({ - lintOnSave: false - }) + expect(pkg.vue.lintOnSave).toBe(false) }) test('should lint ts files when typescript plugin co-exists', async () => { diff --git a/packages/@vue/cli/lib/Generator.js b/packages/@vue/cli/lib/Generator.js index e8e8ac0a27..a66f66cbe1 100644 --- a/packages/@vue/cli/lib/Generator.js +++ b/packages/@vue/cli/lib/Generator.js @@ -241,7 +241,10 @@ module.exports = class Generator { } } else { // by default, always extract vue.config.js - extract('vue') + if (!process.env.VUE_CLI_TEST) { + // by default, always extract vue.config.js + extract('vue') + } // always extract babel.config.js as this is the only way to apply // project-wide configuration even to dependencies. // TODO: this can be removed when Babel supports root: true in package.json From 6d07ea5ae0b8550f46ea2d6fd96d54beae5c9816 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Fri, 3 Sep 2021 10:58:25 +0800 Subject: [PATCH 7/7] chore: remove redundant comment --- packages/@vue/cli/lib/Generator.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/@vue/cli/lib/Generator.js b/packages/@vue/cli/lib/Generator.js index a66f66cbe1..5b26ee78cc 100644 --- a/packages/@vue/cli/lib/Generator.js +++ b/packages/@vue/cli/lib/Generator.js @@ -240,7 +240,6 @@ module.exports = class Generator { extract(key) } } else { - // by default, always extract vue.config.js if (!process.env.VUE_CLI_TEST) { // by default, always extract vue.config.js extract('vue')