API: The modern Property
This feature is inspired by vue-cli modern mode
- Type:
String
orBoolean
- Default: false
- Possible values:
'client'
: Serve both, the modern bundle<script type="module">
and the legacy bundle<script nomodule>
scripts, also provide a<link rel="modulepreload">
for the modern bundle. Every browser that understands themodule
type will load the modern bundle while older browsers fall back to the legacy (transpiled) one.'server'
ortrue
: The Node.js server will check browser version based on the user agent and serve the corresponding modern or legacy bundle.false
: Disable modern build
The two versions of bundles are:
- Modern bundle: targeting modern browsers that support ES modules
- Legacy bundle: targeting older browsers based on babel config (IE9 compatible by default). Info:
- Use command option
[—modern | -m]=[mode]
to build/start modern bundles, for example: inpackage.json
:
{
"scripts": {
"build:modern": "nuxt build --modern=server",
"start:modern": "nuxt start --modern=server"
}
}
Note about nuxt generate: The modern
property also works with the nuxt generate
command, but in this case only the client
option is honored and will be selected automatically when launching the nuxt generate —modern
command without providing any values.
- Nuxt will automatically detect
modern
build innuxt start
whenmodern
is not specified, auto-detected mode is:
Mode | Modern Mode |
---|---|
universal | server |
spa | client |
- Modern mode for
nuxt generate
can only beclient
- Use
build.crossorigin
to setcrossorigin
attribute in<link>
and<script>
Please refer Phillip Walton's excellent post for more knowledge regarding modern builds.