Skip to content

vue-cli

抽离大的第三方包

sh
const { defineConfig } = require('@vue/cli-service')
let externals = {}
let cdn = {}

const isProd = process.env.NODE_ENV === 'production'

if (isProd) {
  // 如果是生产环境 就排除打包 否则不排除
  externals = {
    // key(包名) / value(这个值 需要在CDN中获取js, 相当于 获取的js中 的该包的全局的对象的名字)
    xlsx: 'XLSX',
    echarts: 'echarts'
  }

  cdn = {
    js: [
      'https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js',
      'https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js'
    ]
  }
}

module.exports = defineConfig({
  transpileDependencies: true,
  configureWebpack: {
    externals
  },
  chainWebpack(config) {
    // 注入 cdn 变量
    config.plugin('html').tap((args) => {
      // cdn 属性名非固定,为对象自定义属性
      args[0].cdn = cdn
      return args
    })
  }
})

html引入

html
<% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%=js%>"></script>
<% } %>