vue.config.js

vue.config.js是一个可选的配置文件,如果项目的 (和 package.json同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。所以我们可以自己在项目的根目录下建立vue.config.js的配置文件。

publicPath

• Type: string
• Default: ‘/’
部署应用包时的基本url
例如,如果你的应用被部署在 https://localhost:8000/blogs/,则设置 publicPath 为 /blogs/。
这个值也可以被设置为空字符串 (’’) 或是相对路径 (’./’),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径,也可以用在类似 Cordova hybrid 应用的文件系统中。

    publicPath: process.env.NODE_ENV === 'production'
        ? '/http:127.0.0.1/blog'
        : '/',

outputDir

• Type: string
• Default: ‘dist’
运行 vue-cli-service build 时生成的生产环境构建文件的目录,默认构建前清除文件夹(构建时传入 --no-clean 可关闭该行为)

outputDir: 'dist',
//构建时将生成dist

assetsDir

• Type: string
• Default: ‘’
放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。

  assetsDir: 'static',

indexPath

• Type: string
• Default: ‘index.html’
指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。

indexPath: 'index.html',

filenameHashing

• Type: boolean
• Default: true
默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。然而,这也要求 index 的 HTML 是被 Vue CLI 自动生成的。如果你无法使用 Vue CLI 生成的 index HTML,你可以通过将这个选项设为 false 来关闭文件名哈希。

filenameHashing: true,

pages

• Type: Object
• Default:undefined在 multi-page 模式下构建应用。每个“page”应该有一个对应的 JavaScript 入口文件。其值应该是一个对象,对象的 key 是入口的名字,value 是:
• 一个指定了 entry, template, filename, title 和 chunks 的对象 (除了 entry 之外都是可选的);
• 或一个指定其 entry 的字符串。

  pages: {
        index: {
            // page 的入口
            entry: 'src/main.js',
            // 模板来源
            // template: 'src/pages/index/index.html',
            // 在 dist 的输出为 index.html
            filename: 'index.html',
            // 当使用 title 选项时,
            // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
            title: '首页',
            // 在这个页面中包含的块,默认情况下会包含
            // 提取出来的通用 chunk 和 vendor chunk。
            chunks: ['chunk-vendors', 'chunk-common', 'index']
        },
        // 当使用只有入口的字符串格式时,
        // 模板会被推导为 `public/subpage.html`
        // 并且如果找不到的话,就回退到 `public/index.html`。
        // 输出文件名会被推导为 `subpage.html`。
        // 多入口时,接着写子页面
        //subpage: 'src/subpage/main.js'
    },

lintOnSave

• Type: boolean | ‘warning’ | ‘default’ | ‘error’
• Default: true
设置为 true 或 ‘warning’ 时,eslint-loader 会将 lint 错误输出为编译警告。默认情况下,警告仅仅会被输出到命令行,且不会使得编译失败。
如果你希望让 lint 错误在开发时直接显示在浏览器中,你可以使用 lintOnSave: ‘error’。这会强制 eslint-loader 将 lint 错误输出为编译错误,同时也意味着 lint 错误将会导致编译失败。
或者,你也可以通过设置让浏览器 overlay 同时显示警告和错误:
// eslint-loader 是否在保存的时候检查
lintOnSave: true,

CSS

requireModuleExtension
 // false 时可以去掉文件名中的 .module, 并将所有的 *.(css|scss|sass|less|styl(us)?) 文件视为 CSS Modules 模块,**和之前的module相反**
 requireModuleExtension: false,
loadeoption

向预处理器loder传递选项

module.exports = {
  css: {
    loaderOptions: {
      // 给 sass-loader 传递选项
      sass: {
        // @/ 是 src/ 的别名
        // 所以这里假设你有 `src/variables.sass` 这个文件
        // 注意:在 sass-loader v7 中,这个选项名是 "data"
        prependData: `@import "~@/variables.sass"`
      },
      // 默认情况下 `sass` 选项会同时对 `sass` 和 `scss` 语法同时生效
      // 因为 `scss` 语法在内部也是由 sass-loader 处理的
      // 但是在配置 `data` 选项的时候
      // `scss` 语法会要求语句结尾必须有分号,`sass` 则要求必须没有分号
      // 在这种情况下,我们可以使用 `scss` 选项,对 `scss` 语法进行单独配置
      scss: {
        prependData: `@import "~@/variables.scss";`
      },
      // 给 less-loader 传递 Less.js 相关选项
      less:{
        // http://lesscss.org/usage/#less-options-strict-units `Global Variables`
        // `primary` is global variables fields name
        globalVars: {
          primary: '#fff'
        }
      }
    }
  }
}

pluginOptions

• Type: Object
这是一个不进行任何 schema 验证的对象,因此它可以用来传递任何第三方插件选项。例如:

   pluginOptions: {
      'style-resources-loader': {
        preProcessor: 'less',
        patterns: []
      }

完整版

const path = require('path')
module.exports = {
    chainWebpack: config => {
        const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
        types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)))
    },
    // 部署应用包时的基本 URL
    publicPath: process.env.NODE_ENV === 'production'
        ? '/blog/'
        : '/',
    //运行 vue-cli-service build 时生成的生产环境构建文件的目录
    // 默认构建前清除文件夹(构建时传入 --no-clean 可关闭该行为
    outputDir: 'dist',
    //
    // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
    assetsDir: 'static',
    //
    // // 指定生成的 index.html 的输出路径 (相对于 outputDir),也可以是一个绝对路径
    indexPath: 'index.html',
    //
    // // 生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存
    filenameHashing: true,
    //
    // // 当在 multi-page 模式下构建时,webpack 配置会包含不一样的插件
    // // (这时会存在多个 html-webpack-plugin 和 preload-webpack-plugin 的实例)。
    // // 如果你试图修改这些插件的选项,请确认运行 vue inspect
    pages: {
        index: {
            // page 的入口
            entry: 'src/main.js',
            // 模板来源
            // template: 'src/pages/index/index.html',
            // 在 dist 的输出为 index.html
            filename: 'index.html',
            // 当使用 title 选项时,
            // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
            title: '首页',
            // 在这个页面中包含的块,默认情况下会包含
            // 提取出来的通用 chunk 和 vendor chunk。
            chunks: ['chunk-vendors', 'chunk-common', 'index']
        },
        // 当使用只有入口的字符串格式时,
        // 模板会被推导为 `public/subpage.html`
        // 并且如果找不到的话,就回退到 `public/index.html`。
        // 输出文件名会被推导为 `subpage.html`。
        // 多入口时,接着写子页面
        //subpage: 'src/subpage/main.js'
    },
    // eslint-loader 是否在保存的时候检查
    lintOnSave: true,
    // 是否使用包含运行时编译器的Vue核心的构建
    runtimeCompiler: false,
    // 默认情况下 babel-loader 忽略其中的所有文件 node_modules,
    // 想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来
    transpileDependencies: [],
    // 生产环境 sourceMap
    productionSourceMap: false,
    // 跨域设置
    // 可取值参考: https://developer.mozilla.org/zh-CN/docs/Web/HTML/CORS_settings_attributes
    crossorigin: undefined,
    // 构建后的文件是部署在 CDN 上的,启用该选项可以提供额外的安全性, 默认false
    integrity: false,
    // webpack 配置,键值对象时会合并配置,为方法时会改写配置
    // https://cli.vuejs.org/guide/webpack.html#simple-configuration
    configureWebpack: {
        plugins: [
            new MyAwesomeWebpackPlugin()
        ]
    },
    //configureWebpack: (config) => {},
    // webpack 链接 API,用于生成和修改 webapck 配置
    // https://github.com/mozilla-neutrino/webpack-chain
    chainWebpack: (config) => {
        // 因为是多页面,所以取消 chunks,每个页面只对应一个单独的 JS / CSS
        config.optimization
            .splitChunks({
                cacheGroups: {}
            });
        // 'src/lib' 目录下为外部库文件,不参与 eslint 检测
        config.module
            .rule('eslint')
            .exclude
            .add('/Users/maybexia/Downloads/FE/community_built-in/src/lib')
            .end()
    },
    配置高于chainWebpack中关于 css loader 的配置
    // 所有 webpack-dev-server 的选项都支持
    // https://webpack.js.org/configuration/dev-server/
    devServer: {
        open: true,
        host: '127.0.0.1',
        port: 3000,
        https: false,
        hotOnly: false,
        // 将任何未知请求 (没有匹配到静态文件的请求) 代理到该字段指向的地方
        proxy: null,
        before: app => {
        }
    },
    // 构建时开启多进程处理 babel 编译
    // 是否为 Babel 或 TypeScript 使用 thread-loader
    parallel: require('os').cpus().length > 1,
    // https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
    pwa: {},
    // 第三方插件配置
    pluginOptions: {}
    css: {
        // false 时可以去掉文件名中的 .module, 并将所有的 *.(css|scss|sass|less|styl(us)?) 文件视为 CSS Modules 模块
        requireModuleExtension: false,
        // 是否使用 css 分离插件 ExtractTextPlugin,采用独立样式文件载入,不采用 <style> 方式内联至 html 文件中
        // 生产环境下是 true,开发环境下是 false
        extract: true,
        // 是否构建样式地图,设置为 true 之后可能会影响构建的性能
        sourceMap: false,
        // css预设器配置项
        loaderOptions: {
            less: {
                // http://lesscss.org/usage/#less-options-strict-units `Global Variables`
                // `primary` is global variables fields name
                globalVars: {
                    primary: '#fff'
                }
            }
        },
    },
    pluginOptions: {
      'style-resources-loader': {
        preProcessor: 'less',
          patterns: []
      }
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值