-// This package is the "full-build" that includes both the runtime
+// This entry is the "full-build" that includes both the runtime
// and the compiler, and supports on-the-fly compilation of the template option.
import { compile, CompilerOptions, CompilerError } from '@vue/compiler-dom'
import { registerRuntimeCompiler, RenderFunction, warn } from '@vue/runtime-dom'
export { compileToFunction as compile }
export * from '@vue/runtime-dom'
-if (__BROWSER__ && __DEV__) {
- 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.`
- )
-}
+import './devCheck'
// ensure TS checks only once for each build
let hasTSChecked = false
-const configs = {
+const outputConfigs = {
'esm-bundler': {
file: resolve(`dist/${name}.esm-bundler.js`),
format: `es`
},
+ // main "vue" package only
+ 'esm-bundler-runtime': {
+ file: resolve(`dist/${name}.runtime.esm-bundler.js`),
+ format: `es`
+ },
cjs: {
file: resolve(`dist/${name}.cjs.js`),
format: `cjs`
const packageFormats = inlineFormats || packageOptions.formats || defaultFormats
const packageConfigs = process.env.PROD_ONLY
? []
- : packageFormats.map(format => createConfig(configs[format]))
+ : packageFormats.map(format => createConfig(format, outputConfigs[format]))
if (process.env.NODE_ENV === 'production') {
packageFormats.forEach(format => {
export default packageConfigs
-function createConfig(output, plugins = []) {
+function createConfig(format, output, plugins = []) {
output.externalLiveBindings = false
const isProductionBuild =
process.env.__DEV__ === 'false' || /\.prod\.js$/.test(output.file)
- const isGlobalBuild = /\.global(\.prod)?\.js$/.test(output.file)
- const isBundlerESMBuild = /\.esm-bundler\.js$/.test(output.file)
- const isRawESMBuild = /esm(\.prod)?\.js$/.test(output.file)
+ const isGlobalBuild = format === 'global'
+ const isRawESMBuild = format === 'esm'
+ const isBundlerESMBuild = /esm-bundler/.test(format)
const isRuntimeCompileBuild = /vue\./.test(output.file)
if (isGlobalBuild) {
// during a single build.
hasTSChecked = true
+ const entryFile =
+ format === 'esm-bundler-runtime' ? `src/runtime.ts` : `src/index.ts`
+
return {
- input: resolve(`src/index.ts`),
+ input: resolve(entryFile),
// Global and Browser ESM builds inlines everything so that they can be
// used alone.
external:
}
function createProductionConfig(format) {
- return createConfig({
+ return createConfig(format, {
file: resolve(`dist/${name}.${format}.prod.js`),
- format: configs[format].format
+ format: outputConfigs[format].format
})
}
function createMinifiedConfig(format) {
const { terser } = require('rollup-plugin-terser')
return createConfig(
+ format,
{
file: resolve(`dist/${name}.${format}.prod.js`),
- format: configs[format].format
+ format: outputConfigs[format].format
},
[
terser({