[57e58a3] | 1 | # vue
|
---|
| 2 |
|
---|
| 3 | ## Which dist file to use?
|
---|
| 4 |
|
---|
| 5 | ### From CDN or without a Bundler
|
---|
| 6 |
|
---|
| 7 | - **`vue(.runtime).global(.prod).js`**:
|
---|
| 8 |
|
---|
| 9 | - For direct use via `<script src="...">` in the browser. Exposes the `Vue` global.
|
---|
| 10 | - Note that global builds are not [UMD](https://github.com/umdjs/umd) builds. They are built as [IIFEs](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) and is only meant for direct use via `<script src="...">`.
|
---|
| 11 | - In-browser template compilation:
|
---|
| 12 | - **`vue.global.js`** is the "full" build that includes both the compiler and the runtime so it supports compiling templates on the fly.
|
---|
| 13 | - **`vue.runtime.global.js`** contains only the runtime and requires templates to be pre-compiled during a build step.
|
---|
| 14 | - Inlines all Vue core internal packages - i.e. it's a single file with no dependencies on other files. This means you **must** import everything from this file and this file only to ensure you are getting the same instance of code.
|
---|
| 15 | - Contains hard-coded prod/dev branches, and the prod build is pre-minified. Use the `*.prod.js` files for production.
|
---|
| 16 |
|
---|
| 17 | - **`vue(.runtime).esm-browser(.prod).js`**:
|
---|
| 18 | - For usage via native ES modules imports (in browser via `<script type="module">`).
|
---|
| 19 | - Shares the same runtime compilation, dependency inlining and hard-coded prod/dev behavior with the global build.
|
---|
| 20 |
|
---|
| 21 | ### With a Bundler
|
---|
| 22 |
|
---|
| 23 | - **`vue(.runtime).esm-bundler.js`**:
|
---|
| 24 |
|
---|
| 25 | - For use with bundlers like `webpack`, `rollup` and `parcel`.
|
---|
| 26 | - Leaves prod/dev branches with `process.env.NODE_ENV` guards (must be replaced by bundler)
|
---|
| 27 | - Does not ship minified builds (to be done together with the rest of the code after bundling)
|
---|
| 28 | - Imports dependencies (e.g. `@vue/runtime-core`, `@vue/compiler-core`)
|
---|
| 29 | - Imported dependencies are also `esm-bundler` builds and will in turn import their dependencies (e.g. `@vue/runtime-core` imports `@vue/reactivity`)
|
---|
| 30 | - This means you **can** install/import these deps individually without ending up with different instances of these dependencies, but you must make sure they all resolve to the same version.
|
---|
| 31 | - In-browser template compilation:
|
---|
| 32 | - **`vue.runtime.esm-bundler.js` (default)** is runtime only, and requires all templates to be pre-compiled. This is the default entry for bundlers (via `module` field in `package.json`) because when using a bundler templates are typically pre-compiled (e.g. in `*.vue` files).
|
---|
| 33 | - **`vue.esm-bundler.js`**: includes the runtime compiler. Use this if you are using a bundler but still want runtime template compilation (e.g. in-DOM templates or templates via inline JavaScript strings). You will need to configure your bundler to alias `vue` to this file.
|
---|
| 34 |
|
---|
| 35 | #### Bundler Build Feature Flags
|
---|
| 36 |
|
---|
| 37 | [Detailed Reference on vuejs.org](https://vuejs.org/api/compile-time-flags.html)
|
---|
| 38 |
|
---|
| 39 | `esm-bundler` builds of Vue expose global feature flags that can be overwritten at compile time:
|
---|
| 40 |
|
---|
| 41 | - `__VUE_OPTIONS_API__`
|
---|
| 42 |
|
---|
| 43 | - Default: `true`
|
---|
| 44 | - Enable / disable Options API support
|
---|
| 45 |
|
---|
| 46 | - `__VUE_PROD_DEVTOOLS__`
|
---|
| 47 |
|
---|
| 48 | - Default: `false`
|
---|
| 49 | - Enable / disable devtools support in production
|
---|
| 50 |
|
---|
| 51 | - `__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`
|
---|
| 52 | - Default: `false`
|
---|
| 53 | - Enable / disable detailed warnings for hydration mismatches in production
|
---|
| 54 |
|
---|
| 55 | The build will work without configuring these flags, however it is **strongly recommended** to properly configure them in order to get proper tree-shaking in the final bundle.
|
---|
| 56 |
|
---|
| 57 | ### For Server-Side Rendering
|
---|
| 58 |
|
---|
| 59 | - **`vue.cjs(.prod).js`**:
|
---|
| 60 | - For use in Node.js server-side rendering via `require()`.
|
---|
| 61 | - If you bundle your app with webpack with `target: 'node'` and properly externalize `vue`, this is the build that will be loaded.
|
---|
| 62 | - The dev/prod files are pre-built, but the appropriate file is automatically required based on `process.env.NODE_ENV`.
|
---|