diff --git a/packages/global.d.ts b/packages/global.d.ts index f8229262..60adb645 100644 --- a/packages/global.d.ts +++ b/packages/global.d.ts @@ -1,4 +1,7 @@ // Global compile-time constants declare var __DEV__: boolean -declare var __COMPAT__: boolean declare var __JSDOM__: boolean + +// Feature flags +declare var __FEATURE_OPTIONS__: boolean +declare var __FEATURE_PRODUCTION_TIP__: boolean diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index d9dd498d..e7bc46d2 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -1,3 +1,10 @@ // TODO this package will be the "full-build" that includes both the runtime // and the compiler 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.` + ) +} diff --git a/rollup.config.js b/rollup.config.js index 0c9bc1d1..3f530bbc 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -75,7 +75,6 @@ function createConfig(output, plugins = []) { const isGlobalBuild = /\.global(\.prod)?\.js$/.test(output.file) const isBunlderESMBuild = /\.esm\.js$/.test(output.file) const isBrowserESMBuild = /esm-browser(\.prod)?\.js$/.test(output.file) - const isCompat = /dist\/vue\./.test(output.file) if (isGlobalBuild) { output.name = packageOptions.name @@ -112,7 +111,11 @@ function createConfig(output, plugins = []) { plugins: [ tsPlugin, aliasPlugin, - createReplacePlugin(isProductionBuild, isBunlderESMBuild, isCompat), + createReplacePlugin( + isProductionBuild, + isBunlderESMBuild, + isGlobalBuild || isBrowserESMBuild + ), ...plugins ], output, @@ -124,15 +127,19 @@ function createConfig(output, plugins = []) { } } -function createReplacePlugin(isProduction, isBunlderESMBuild, isCompat) { +function createReplacePlugin(isProduction, isBunlderESMBuild, isBrowserBuild) { return replace({ __DEV__: isBunlderESMBuild ? // preserve to be handled by bundlers `process.env.NODE_ENV !== 'production'` : // hard coded dev/prod builds !isProduction, - // compatibility builds - __COMPAT__: !!packageOptions.compat, + // show production tip? + // 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 __JSDOM__: false })