feat: production tip

This commit is contained in:
Evan You 2019-09-03 20:51:42 -04:00
parent cbc8dddd15
commit c833db9c97
3 changed files with 23 additions and 6 deletions

View File

@ -1,4 +1,7 @@
// Global compile-time constants // Global compile-time constants
declare var __DEV__: boolean declare var __DEV__: boolean
declare var __COMPAT__: boolean
declare var __JSDOM__: boolean declare var __JSDOM__: boolean
// Feature flags
declare var __FEATURE_OPTIONS__: boolean
declare var __FEATURE_PRODUCTION_TIP__: boolean

View File

@ -1,3 +1,10 @@
// TODO this package will be the "full-build" that includes both the runtime // TODO this package will be the "full-build" that includes both the runtime
// and the compiler // and the compiler
export * from '@vue/runtime-dom' export * from '@vue/runtime-dom'
if (__FEATURE_PRODUCTION_TIP__) {
console[console.info ? 'info' : 'log'](
`You are running a development build of Vue.\n` +
`Make sure to use the production build (*.prod.js) when deploying for production.`
)
}

View File

@ -75,7 +75,6 @@ function createConfig(output, plugins = []) {
const isGlobalBuild = /\.global(\.prod)?\.js$/.test(output.file) const isGlobalBuild = /\.global(\.prod)?\.js$/.test(output.file)
const isBunlderESMBuild = /\.esm\.js$/.test(output.file) const isBunlderESMBuild = /\.esm\.js$/.test(output.file)
const isBrowserESMBuild = /esm-browser(\.prod)?\.js$/.test(output.file) const isBrowserESMBuild = /esm-browser(\.prod)?\.js$/.test(output.file)
const isCompat = /dist\/vue\./.test(output.file)
if (isGlobalBuild) { if (isGlobalBuild) {
output.name = packageOptions.name output.name = packageOptions.name
@ -112,7 +111,11 @@ function createConfig(output, plugins = []) {
plugins: [ plugins: [
tsPlugin, tsPlugin,
aliasPlugin, aliasPlugin,
createReplacePlugin(isProductionBuild, isBunlderESMBuild, isCompat), createReplacePlugin(
isProductionBuild,
isBunlderESMBuild,
isGlobalBuild || isBrowserESMBuild
),
...plugins ...plugins
], ],
output, output,
@ -124,15 +127,19 @@ function createConfig(output, plugins = []) {
} }
} }
function createReplacePlugin(isProduction, isBunlderESMBuild, isCompat) { function createReplacePlugin(isProduction, isBunlderESMBuild, isBrowserBuild) {
return replace({ return replace({
__DEV__: isBunlderESMBuild __DEV__: isBunlderESMBuild
? // preserve to be handled by bundlers ? // preserve to be handled by bundlers
`process.env.NODE_ENV !== 'production'` `process.env.NODE_ENV !== 'production'`
: // hard coded dev/prod builds : // hard coded dev/prod builds
!isProduction, !isProduction,
// compatibility builds // show production tip?
__COMPAT__: !!packageOptions.compat, // should only do this for dev AND browser-targeting builds.
__FEATURE_PRODUCTION_TIP__: !isProduction && isBrowserBuild,
// support options?
// the lean build drops options related code with buildOptions.lean: true
__FEATURE_OPTIONS__: !packageOptions.lean,
// this is only used during tests // this is only used during tests
__JSDOM__: false __JSDOM__: false
}) })