配置解析

时间:2025-01-17 13:42:26
  • const path = require('path')
  • module.exports = {
  • publicPath: publicPath: process.env.NODE_ENV === 'production'? '/production-sub-path/': './'
  • outputDir: 'zjjc', //输出文件目录
  • assetsDir: 'assets', //放置生成的静态资源
  • indexPath: '', //指定生成的 的输出路径 (相对于 outputDir)
  • lintOnSave: false, //eslint-loader 是否在保存的时候检查 安装@vue/cli-plugin-eslint有效
  • runtimeCompiler: true, //是否使用包含运行时编译器的 Vue 构建版本。设置true后你就可以在使用template
  • productionSourceMap: false, // 如果您不需要生产时的源映射,那么将此设置为false可以加速生产构建
  • devServer: {
  • https: false,
  • open: true, //配置自动启动浏览器
  • host: 'localhost',
  • port: 8080,
  • proxy: {
  • '/zj-server/': {
  • target:'http://172.6.4.11:8010', //开发环境
  • changeOrigin: true, //是否开启代理,
  • },
  • }
  • },
  • configureWebpack: config => { //webpack配置
  • const baseConfig = {
  • resolve: {
  • alias: {
  • '@assets': resolve('src/assets') //别名
  • }
  • },
  • }
  • return { ...baseConfig }
  • },
  • filenameHashing:false //去掉文件名中的hash
  • //多页面应用
  • pages:{
  • //1对象模式(与字符串模式互斥)
  • index: {
  • // page 的入口
  • entry: 'src/index/',
  • // 模板来源
  • template: 'public/',
  • // 在 dist/ 的输出
  • filename: '',
  • // 当使用 title 选项时,
  • // template 中的 title 标签需要是 <title><%= %></title>
  • title: 'Index Page',
  • //chunks 选项的作用主要是针对多入口(entry)文件。当你有多个入口文件的时候,对应就会生成多个编译后的 js 文件。那么 chunks 选项就可以决定是否都使用这些生成的 js 文件,也就是编译完后html中引入的js文件(webpack打包入口)
  • chunks: ['chunk-vendors', 'chunk-common', 'index']
  • },
  • //2字符串模式(与对象模式互斥)
  • // 当使用只有入口的字符串格式时,
  • // 模板会被推导为 `public/`
  • // 并且如果找不到的话,就回退到 `public/`。
  • // 输出文件名会被推导为 ``。
  • subpage: 'src/subpage/'
  • }
  • //vuecli的webpack配置项修改
  • //chaiwebpack对应api地址:/Yatoo2018/webpack-chain/tree/zh-cmn-Hans
  • chainWebpack: config => {
  • //不生成(不推荐性能不好,且不能在现代浏览器运行)
  • config.plugins.delete('html')
  • config.plugins.delete('preload')
  • config.plugins.delete('prefetch')
  • //限制内联文件加载大小,减少http请求数量
  • config.module.rule('images').use('url-loader').loader('url-loader')
  • .top(option=>Object.assign(options,{limit:10240})
  • //css自动导入(oneOf唯一匹配 执行效率高)
  • const types = ['vue-modules','vue','normal-modules','normal']
  • types.forEach(type=>addStyleResource(config.module.rule('stylus').oneOf(type))
  • //替换loader规则
  • const svgRule = config.module.rule('svg')
  • svgRule.uses.clear()
  • svgRule.use('vue-svg-loader').loader('vue-svg-loader')
  • //cache-loader:缓存编译。文件会缓存在node/modules/.cache中 遇到解决不了的编译问题可以删除该目录试试
  • //thread-loader:多进程转换语法(主要用于资源过大打包使用-目前无使用场景占时只做了解)
  • //修改插件选项
  • //args[{
  • title:' name属性',
  • templateParameters:[Function:templateParameters], //模板函数
  • template:'对应html文件本地地址'
  • }]
  • config.plugin('html').tap(args=>args)
  • },
  • //直接合并到最初的webpack配置
  • configureWebpack:{
  • plugins:[
  • new MyAwesomeWebpackPlugin()
  • ]
  • },
  • css: {
  • extract: process.env.NODE_ENV === 'production'
  • }
  • };
  • function addStyleResource(rule){
  • rule.use('style-resource').loader('style-resources-loader').option({
  • patterns:[
  • path.resolve(__dirname,'./src/style/')
  • ]
  • })
  • }