构建配置

Nuxt.js 允许你根据服务端需求,自定义 webpack 的构建配置。

analyze

Nuxt.js 使用 webpack-bundle-analyzer 分析并可视化构建后的打包文件,你可以基于分析结果来决定如何优化它。

  • 类型: BooleanObject
  • 默认值: false

如果是 Object 类型, 可以移步 这里 查看可用的属性。

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. analyze: true
  4. // or
  5. analyze: {
  6. analyzerMode: 'static'
  7. }
  8. }
  9. }

提示: 可通过 nuxt build --analyzenuxt build -a 命令来启用该分析器进行编译构建,分析结果可在 http://localhost:8888 上查看。

babel

  • 类型: Object

为 JS 和 Vue 文件设定自定义的 babel 配置。

默认值:

  1. {
  2. presets: ['vue-app']
  3. }

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. babel: {
  4. presets: ['es2015', 'stage-0']
  5. }
  6. }
  7. }

extend

  • 类型: Function

为客户端和服务端的构建配置进行手工的扩展处理。

该扩展方法会被调用两次,一次在服务端打包构建的时候,另外一次是在客户端打包构建的时候。该方法的参数如下:

  1. Webpack 配置对象
  2. 构建环境对象,包括这些属性(全部为布尔类型): isDevisClientisServer

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. extend (config, { isClient }) {
  4. // 为 客户端打包 进行扩展配置
  5. if (isClient) {
  6. config.devtool = 'eval-source-map'
  7. }
  8. }
  9. }
  10. }

如果你想了解更多关于webpack的配置,可以移步 Nuxt.js 源码的 webpack 目录

filenames

  • 类型: Object

自定义打包文件名

默认值:

  1. {
  2. vendor: 'vendor.bundle.[hash].js',
  3. app: 'nuxt.bundle.[chunkhash].js'
  4. }

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. filenames: {
  4. vendor: 'vendor.[hash].js',
  5. app: 'app.[chunkhash].js'
  6. }
  7. }
  8. }

loaders

  • 类型: Array
    • 数组元素类型: Object

自定义 webpack 加载器

默认值:

  1. [
  2. {
  3. test: /\.(png|jpe?g|gif|svg)$/,
  4. loader: 'url-loader',
  5. query: {
  6. limit: 1000, // 1KO
  7. name: 'img/[name].[hash:7].[ext]'
  8. }
  9. },
  10. {
  11. test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
  12. loader: 'url-loader',
  13. query: {
  14. limit: 1000, // 1 KO
  15. name: 'fonts/[name].[hash:7].[ext]'
  16. }
  17. }
  18. ]

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. loaders: [
  4. {
  5. test: /\.(png|jpe?g|gif|svg)$/,
  6. loader: 'url-loader',
  7. query: {
  8. limit: 10000, // 10KO
  9. name: 'img/[name].[hash].[ext]'
  10. }
  11. }
  12. ]
  13. }
  14. }

nuxt.config.js 里有自定义的 loaders 配置时,将会覆盖默认的配置。

plugins

  • 类型: Array
  • 默认值: []

配置 Webpack 插件

例如 (nuxt.config.js):

  1. const webpack = require('webpack')
  2. module.exports = {
  3. build: {
  4. plugins: [
  5. new webpack.DefinePlugin({
  6. 'process.VERSION': require('./package.json').version
  7. })
  8. ]
  9. }
  10. }

postcss

  • 类型: Array

自定义 postcss 配置

默认值:

  1. [
  2. require('autoprefixer')({
  3. browsers: ['last 3 versions']
  4. })
  5. ]

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. postcss: [
  4. require('postcss-nested')(),
  5. require('postcss-responsive-type')(),
  6. require('postcss-hexrgba')(),
  7. require('autoprefixer')({
  8. browsers: ['last 3 versions']
  9. })
  10. ]
  11. }
  12. }

publicPath

  • 类型: String
  • 默认值: '/_nuxt/'

Nuxt.js 允许你将待发布的文件直接上传至 CDN 以获得最佳访问性能,只需设置 publicPath 为你的 CDN 地址即可。

例如 (nuxt.config.js):

  1. module.exports = {
  2. build: {
  3. publicPath: 'https://cdn.nuxtjs.org'
  4. }
  5. }

通过以上配置,当运行 nuxt build 时,再将.nuxt/dist/目录的内容上传到您的CDN,然后瞧!

vendor

Nuxt.js 允许你在自动生成的 vendor.bundle.js 文件中添加一些模块,以减少应用 bundle 的体积。这里说的是一些你所依赖的第三方模块 (比如 axios)

  • 类型: Array
    • 数组元素类型: String

想要把模块打包进 vendor bundle,你可以在 nuxt.config.jsbuild.vendor 字段中配置:

  1. module.exports = {
  2. build: {
  3. vendor: ['axios']
  4. }
  5. }

你也可以配置文件路径,比如一些自己写的库:

  1. module.exports = {
  2. build: {
  3. vendor: [
  4. 'axios',
  5. '~plugins/my-lib.js'
  6. ]
  7. }
  8. }