加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

API 构建配置浅谈

发布时间:2023-04-14 13:16:49 所属栏目:教程 来源:
导读:Nuxt.js 允许你根据服务端需求,自定义 webpack 的构建配置。

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

如果是 Object 类型, 可以移步 这
Nuxt.js 允许你根据服务端需求,自定义 webpack 的构建配置。

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

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

例如 (nuxt.config.js):

module.exports = {
  build: {
    analyze: true
    // or
    analyze: {
      analyzerMode: 'static'
    }
  }
}
提示: 可通过 nuxt build --analyze 或 nuxt build -a 命令来启用该分析器进行编译构建。

默认:

{
  babelrc: false,
  cacheDirectory: undefined,
  presets: ['@nuxt/babel-preset-app']
}
默认为 @nuxt/babel-preset-app 在client构建中是ie:'9',在server构建中是node:'current'。

注意: build.babel.presets 中配置的预设将应用于客户端和服务器构建。目标将由Nuxt相应地设置(客户端/服务器)。如果要为客户端或服务器版本配置不同的预设,请使用presets作为函数:

export default {
  build: {
    babel: {
      presets ({ isServer }) {
        const targets = isServer ? { node: '10' } : { ie: '11' }
        return [
          [ require.resolve('@nuxt/babel-preset-app'), { targets } ]
        ]
      }
    }
  }
}
我们强烈建议使用默认预设。但是,如果必须,您可以更改预设。

Example for custom presets:

export default {
  build: {
    babel: {
      presets: ['es2015', 'stage-0']
    }
  }
}
cache

在生成的HTML中的 <link rel="stylesheet"> 和 <script> 标记上配置 crossorigin 属性。 请查看 CORS settings attributes 了解更多可用选项。

cssSourceMap
类型: boolean

默认: true 为开发模式(development), false 为生产模式(production)。

开启 CSS Source Map 支持

devMiddleware
类型: Object

请查看 webpack-dev-middleware 了解更多可用选项。

devtools
类型: boolean

默认: false

配置是否允许 vue-devtools 调试。

如果您已经通过 nuxt.config.js 或其他方式激活,则无论标志为 true 或 false,devtools都会启用。

extend
类型: Function

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

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

Webpack 配置对象

构建环境对象,包括这些属性(全部为布尔类型):isDev,isClient,isServer

警告: 提供的isClient和isServer键与context中可用的键分开, 它们是长期支持的。这里不要使用process.client和process.server,因为它们是'undefined'。

例如 (nuxt.config.js):

module.exports = {
  build: {
    extend (config, { isClient }) {
      // 为 客户端打包 进行扩展配置
      if (isClient) {
        config.devtool = 'eval-source-map'
      }
    }
  }
}
如果你想了解更多关于webpack的配置,可以移步 Nuxt.js 源码的 webpack 目录。

loaders in extend
loaders具有与之相同的对象结构 build.loaders, 所以你可以在extend中更改loaders的选项。

例如 (nuxt.config.js):

export default {
  build: {
    extend (config, { isClient, loaders: { vue } }) {
      // 仅扩展客户端中的webpack配置
      if (isClient) {
        vue.transformAssetUrls.video = ['src', 'poster']
      }
    }
  }
}
extractCSS
使用Vue 服务器端渲染指南启用常见CSS提取。

使用extract-css-chunks-webpack-plugin将主块中的 CSS 提取到一个单独的 CSS 文件中(自动注入模板),该文件允许单独缓存文件。当有很多共用 CSS 时建议使用此方法,异步组件中的 CSS 将保持内联为JavaScript字符串并由vue-style-loader处理。

默认值:

{
  app: ({ isDev }) => isDev ? '[name].js' : '[contenthash].js',
  chunk: ({ isDev }) => isDev ? '[name].js' : '[contenthash].js',
  css: ({ isDev }) => isDev ? '[name].css' : '[contenthash].css',
  img: ({ isDev }) => isDev ? '[path][name].[ext]' : 'img/[contenthash:7].[ext]',
  font: ({ isDev }) => isDev ? '[path][name].[ext]' : 'fonts/[contenthash:7].[ext]',
  video: ({ isDev }) => isDev ? '[path][name].[ext]' : 'videos/[contenthash:7].[ext]'
}
此示例将 chunk 名称更改为数字id (nuxt.config.js):

export default {
  build: {
    filenames: {
      chunk: ({ isDev }) => isDev ? '[name].js' : '[id].[contenthash].js'
    }
  }
}
要更多了解使用,可以移步webpack documentation

html.minify
类型: Object

默认:

{
  collapseBooleanAttributes: true,
  collapseWhitespace: false,
  decodeEntities: true,
  minifyCSS: true,
  minifyJS: true,
  processConditionalComments: true,
  removeAttributeQuotes: false,
  removeComments: false,
  removeEmptyAttributes: true,
  removeOptionalTags: false,
  removeRedundantAttributes: true,
  removeScriptTypeAttributes: false,
  removeStyleLinkTypeAttributes: false,
  removeTagWhitespace: false,
  sortClassName: false,
  trimCustomFragments: true,
  useShortDoctype: true
}
用于压缩在构建打包过程中创建的HTML文件配置html-minifier的插件(将应用于所有模式)。

默认:

{
  file: {},
  fontUrl: { limit: 1000 },
  imgurl: { limit: 1000 },
  pugPlain: {},
  vue: {
    transformAssetUrls: {
      video: 'src',
      source: 'src',
      object: 'src',
      embed: 'src'
    }
  },
  css: {},
  cssModules: {
    localIdentName: '[local]_[hash:base64:5]'
  },
  less: {},
  sass: {
    indentedSyntax: true
  },
  scss: {},
  stylus: {},
  vueStyle: {}
}
注意:除了在nuxt.config.js中指定配置外,它还可以通过build.extend修改。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章