mirror of
https://gitee.com/vuejs/vue.git
synced 2024-12-02 03:57:36 +08:00
update dist files readme
This commit is contained in:
parent
1b6a7d4b87
commit
f7170324a1
139
dist/README.md
vendored
139
dist/README.md
vendored
@ -1,63 +1,124 @@
|
||||
## Explanation of Build Files
|
||||
|
||||
> A rule of thumb: files that end in `common.js` are meant for built tools, files that do not end in `common.js` are meant for direct browser usage.
|
||||
| | UMD | CommonJS | ES Module |
|
||||
| --- | --- | --- | --- |
|
||||
| **Full** | vue.js | vue.common.js | vue.esm.js |
|
||||
| **Runtime-only** | vue.runtime.js | vue.runtime.common.js | vue.runtime.esm.js |
|
||||
| **Full (production)** | vue.min.js | | |
|
||||
| **Runtime-only (production)** | vue.runtime.min.js | | |
|
||||
|
||||
- ### vue.js
|
||||
### Terms
|
||||
|
||||
The full (compiler-included) browser build. This is the build you can just include with a script tag:
|
||||
- **Full**: builds that contains both the compiler and the runtime.
|
||||
|
||||
```
|
||||
<script src="https://unpkg.com/vue/dist/vue.js"></script>
|
||||
```
|
||||
- **Compiler**: code that is responsible for compiling template strings into JavaScript render functions.
|
||||
|
||||
Note that this build is hard-coded to development mode.
|
||||
- **Runtime**: code that is responsible for creating Vue instances, rendering and patching virtual DOM, etc. Basically everything minus the compiler.
|
||||
|
||||
- ### vue.min.js
|
||||
- **[UMD](https://github.com/umdjs/umd)**: UMD builds can be used directly in the browser via a `<script>` tag. The default file from Unpkg CDN at [https://unpkg.com/vue](https://unpkg.com/vue) is the Runtime + Compiler UMD build (`vue.js`).
|
||||
|
||||
Same as `vue.js`, but minified AND is hard-coded to production mode (with runtime checks and warnings stripped).
|
||||
- **[CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1)**: CommonJS builds are intended for use with older bundlers like [browserify](http://browserify.org/) or [webpack 1](https://webpack.github.io). The default file for these bundlers (`pkg.main`) is the Runtime only CommonJS build (`vue.runtime.common.js`).
|
||||
|
||||
- ### vue.common.js
|
||||
- **[ES Module](http://exploringjs.com/es6/ch_modules.html)**: ES module builds are intended for use with modern bundlers like [webpack 2](https://webpack.js.org) or [rollup](http://rollupjs.org/). The default file for these bundlers (`pkg.module`) is the Runtime only ES Module build (`vue.runtime.esm.js`).
|
||||
|
||||
The full (compiler-included) CommonJS build. This is the build intended to be used with a Node-compatible bundler, e.g. Webpack or Browserify.
|
||||
### Runtime + Compiler vs. Runtime-only
|
||||
|
||||
The difference between the browser build and the CommonJS build is that the latter preserves the `process.env.NODE_ENV` check for development/production modes (defaults to development mode). This gives you more control over what mode the code should run in:
|
||||
If you need to compile templates on the fly (e.g. passing a string to the `template` option, or mounting to an element using its in-DOM HTML as the template), you will need the compiler and thus the full build.
|
||||
|
||||
- When bundling for the browser, you can turn on production mode by using Webpack's [DefinePlugin](https://webpack.github.io/docs/list-of-plugins.html#defineplugin) to replace `process.env.NODE_ENV` with the `"production"` string literal:
|
||||
When using `vue-loader` or `vueify`, templates inside `*.vue` files are compiled into JavaScript at build time. You don't really need the compiler in the final bundle, and can therefore use the runtime-only build.
|
||||
|
||||
``` js
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.NODE_ENV': '"production"'
|
||||
})
|
||||
]
|
||||
```
|
||||
Since the runtime-only builds are roughly 30% lighter-weight than their full-build counterparts, you should use it whenever you can. If you wish to use the full build instead, you need to configure an alias in your bundler.
|
||||
|
||||
This also allows minifiers to completely drop the warnings inside the conditional blocks. For Browserify, you can use [envify](https://github.com/hughsk/envify) to achieve the same.
|
||||
#### Webpack
|
||||
|
||||
- When running Vue in Node.js (during server side rendering), Vue will pick up the actual `process.env.NODE_ENV` if set.
|
||||
|
||||
- ### vue.runtime.common.js
|
||||
|
||||
The runtime-only (compiler-excluded) CommonJS build.
|
||||
|
||||
This build does not support the `template` option, because it doesn't include the compiler. It is thus 30% lighter than the full build. However, you can still use templates in Single-File `*.vue` components via `vue-loader` or `vueify`, as these tools will pre-compile the templates into render functions for you.
|
||||
|
||||
**This is the default build you get from `import Vue from 'vue'` or `var Vue = require('vue')`**. To use the full CommonJS build instead, configure Webpack via the `resolve.alias` option:
|
||||
|
||||
``` js
|
||||
``` js
|
||||
module.exports = {
|
||||
// ...
|
||||
resolve: {
|
||||
alias: {
|
||||
vue$: 'vue/dist/vue.common.js'
|
||||
'vue$': 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1
|
||||
}
|
||||
}
|
||||
```
|
||||
}
|
||||
````
|
||||
|
||||
For Browserify, use the [aliasify](https://github.com/benbria/aliasify) transform.
|
||||
#### Rollup
|
||||
|
||||
- ### vue.runtime.js
|
||||
``` js
|
||||
const alias = require('rollup-plugin-alias')
|
||||
|
||||
The runtime-only (compiler-excluded) browser build. You can also include this build with a script tag, but with this build, you will **not** be able to use the `template` option. Hard-coded to development mode.
|
||||
rollup({
|
||||
// ...
|
||||
plugins: [
|
||||
alias({
|
||||
'vue': 'vue/dist/vue.esm.js'
|
||||
})
|
||||
]
|
||||
})
|
||||
```
|
||||
|
||||
- ### vue.runtime.min.js
|
||||
#### Browserify
|
||||
|
||||
Same as `vue.runtime.js`, but minified AND hard-coded to production mode (with runtime checks and warnings stripped).
|
||||
Add to your project's `package.json`:
|
||||
|
||||
``` js
|
||||
{
|
||||
// ...
|
||||
"browser": {
|
||||
"vue": "vue/dist/vue.common.js"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Development vs. Production Mode
|
||||
|
||||
Development/production modes are hard-coded for the UMD builds: the un-minified files are for development, and the minified files are for production.
|
||||
|
||||
CommonJS and ES Module builds are intended for bundlers, therefore we don't provide minified versions for them. You will be responsible for minifying the final bundle yourself.
|
||||
|
||||
CommonJS and ES Module builds also preserve raw checks for `process.env.NODE_ENV` to determine the mode they should run in. You should use appropriate bundler configurations to replace these environment variables in order to control which mode Vue will run in. Replacing `process.env.NODE_ENV` with string literals also allows minifiers like UglifyJS to completely drop the development-only code blocks, reducing final file size.
|
||||
|
||||
#### Webpack
|
||||
|
||||
Use Webpack's [DefinePlugin](https://webpack.js.org/plugins/define-plugin/):
|
||||
|
||||
``` js
|
||||
var webpack = require('webpack')
|
||||
|
||||
module.exports = {
|
||||
// ...
|
||||
plugins: [
|
||||
// ...
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify('production')
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Rollup
|
||||
|
||||
Use [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace):
|
||||
|
||||
``` js
|
||||
const replace = require('rollup-plugin-replace')
|
||||
|
||||
rollup({
|
||||
// ...
|
||||
plugins: [
|
||||
replace({
|
||||
'process.env.NODE_ENV': JSON.stringify('production')
|
||||
})
|
||||
]
|
||||
}).then(...)
|
||||
```
|
||||
|
||||
#### Browserify
|
||||
|
||||
Apply a global [envify](https://github.com/hughsk/envify) transform to your bundle.
|
||||
|
||||
``` bash
|
||||
NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user