Skip to content

Commit 0b42f2f

Browse files
committed
refactor: make modern mode a build flag instead of an option
1 parent 272ef5e commit 0b42f2f

File tree

7 files changed

+17
-24
lines changed

7 files changed

+17
-24
lines changed

packages/@vue/cli-service/__tests__/modernMode.spec.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@ let server, browser
1212
test('modern mode', async () => {
1313
const project = await create('modern-mode', defaultPreset)
1414

15-
await project.write('vue.config.js', `
16-
module.exports = {
17-
modernMode: true
18-
}
19-
`)
20-
21-
const { stdout } = await project.run('vue-cli-service build')
15+
const { stdout } = await project.run('vue-cli-service build --modern')
2216
expect(stdout).toMatch('Build complete.')
2317

2418
// assert correct bundle files

packages/@vue/cli-service/lib/commands/build/index.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ module.exports = (api, options) => {
2424
options: {
2525
'--mode': `specify env mode (default: production)`,
2626
'--dest': `specify output directory (default: ${options.outputDir})`,
27+
'--modern': `build app targeting modern browsers with auto fallback`,
2728
'--target': `app | lib | wc | wc-async (default: ${defaults.target})`,
2829
'--name': `name for lib or web-component mode (default: "name" in package.json or entry filename)`,
2930
'--no-clean': `do not remove the dist directory before building the project`,
@@ -42,17 +43,20 @@ module.exports = (api, options) => {
4243
args.entry = args.entry || 'src/App.vue'
4344
}
4445

45-
if (options.modernMode && args.target === 'app') {
46+
if (args.modern && args.target === 'app') {
47+
process.env.VUE_CLI_MODERN_MODE = true
4648
delete process.env.VUE_CLI_MODERN_BUILD
4749
await build(Object.assign({}, args, {
48-
modern: false
50+
modernBuild: false
4951
}), api, options)
5052

5153
process.env.VUE_CLI_MODERN_BUILD = true
5254
await build(Object.assign({}, args, {
53-
modern: true,
55+
modernBuild: true,
5456
clean: false
5557
}), api, options)
58+
59+
delete process.env.VUE_CLI_MODERN_MODE
5660
delete process.env.VUE_CLI_MODERN_BUILD
5761
} else {
5862
return build(args, api, options)
@@ -77,8 +81,8 @@ async function build (args, api, options) {
7781
log()
7882
const mode = api.service.mode
7983
if (args.target === 'app') {
80-
const bundleTag = options.modernMode
81-
? args.modern
84+
const bundleTag = args.modern
85+
? args.modernBuild
8286
? `modern bundle `
8387
: `legacy bundle `
8488
: ``
@@ -93,7 +97,7 @@ async function build (args, api, options) {
9397
}
9498

9599
const targetDir = api.resolve(args.dest || options.outputDir)
96-
const isLegacyBuild = args.target === 'app' && options.modernMode && !args.modern
100+
const isLegacyBuild = args.target === 'app' && args.modern && !args.modernBuild
97101

98102
// resolve raw webpack config
99103
process.env.VUE_CLI_BUILD_TARGET = args.target

packages/@vue/cli-service/lib/commands/build/resolveAppConfig.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ module.exports = (api, args, options) => {
1010
})
1111
}
1212

13-
if (options.modernMode) {
13+
if (args.modern) {
1414
const ModernModePlugin = require('../../webpack/ModernModePlugin')
15-
const isModernBuild = !!process.env.VUE_CLI_MODERN_BUILD
16-
if (!isModernBuild) {
15+
if (!args.modernBuild) {
1716
// Inject plugin to extract build stats and write to disk
1817
config
1918
.plugin('modern-mode-legacy')

packages/@vue/cli-service/lib/config/app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module.exports = (api, options) => {
1010
}
1111

1212
const isProd = process.env.NODE_ENV === 'production'
13-
const isLegacyBundle = options.modernMode && !process.env.VUE_CLI_MODERN_BUILD
13+
const isLegacyBundle = process.env.VUE_CLI_MODERN_MODE && !process.env.VUE_CLI_MODERN_BUILD
1414

1515
// code splitting
1616
if (isProd) {

packages/@vue/cli-service/lib/config/base.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
module.exports = (api, options) => {
22
api.chainWebpack(webpackConfig => {
3-
const isLegacyBundle = options.modernMode && !process.env.VUE_CLI_MODERN_BUILD
3+
const isLegacyBundle = process.env.VUE_CLI_MODERN_MODE && !process.env.VUE_CLI_MODERN_BUILD
44
const resolveLocal = require('../util/resolveLocal')
55
const getAssetPath = require('../util/getAssetPath')
6-
const inlineLimit = 10000
6+
const inlineLimit = 4096
77

88
webpackConfig
99
.mode('development')

packages/@vue/cli-service/lib/config/prod.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.exports = (api, options) => {
22
api.chainWebpack(webpackConfig => {
33
if (process.env.NODE_ENV === 'production') {
4-
const isLegacyBundle = options.modernMode && !process.env.VUE_CLI_MODERN_BUILD
4+
const isLegacyBundle = process.env.VUE_CLI_MODERN_MODE && !process.env.VUE_CLI_MODERN_BUILD
55
const getAssetPath = require('../util/getAssetPath')
66
const filename = getAssetPath(
77
options,

packages/@vue/cli-service/lib/options.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const schema = createSchema(joi => joi.object({
44
baseUrl: joi.string().allow(''),
55
outputDir: joi.string(),
66
assetsDir: joi.string(),
7-
modernMode: joi.boolean(),
87
runtimeCompiler: joi.boolean(),
98
transpileDependencies: joi.array(),
109
productionSourceMap: joi.boolean(),
@@ -55,9 +54,6 @@ exports.defaults = () => ({
5554
// where to put static assets (js/css/img/font/...)
5655
assetsDir: '',
5756

58-
// ship minimally-transpiled ES2015 along with a legacy bundle
59-
modernMode: false,
60-
6157
// boolean, use full build?
6258
runtimeCompiler: false,
6359

0 commit comments

Comments
 (0)