Vue cli 3的配置 vue.config.js

最近安装了下vue cli3版本, 和vue cli2 相比文件目录少了很多配置,没有了build和config目录,那么像vue cli2 之前的关于端口号的配置,打包之后路径的配置,图片的配置 等等,应该去哪里配置呢,vue cli3 可以在项目根目录新建一个vue.config.js文件,像之前的很多繁琐配置,都可以在这个文件里配置啦。
官方是这样说的。vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。
自己找了些搜集,整理了一下。

vue-cli3的源码部分:@vue/cli-service/lib/util/resolveClientEnv.js


module.exports = function resolveClientEnv (options, raw) {
  const env = {}
  Object.keys(process.env).forEach(key => {
    if (prefixRE.test(key) || key === 'NODE_ENV') {
      env[key] = process.env[key]
    }
  })
  env.BASE_URL = options.baseUrl
 
  if (raw) {
    return env
  }
 
  for (const key in env) {
    env[key] = JSON.stringify(env[key])
  }
  return {
    'process.env': env
  }

核心:env.BASE_URL = options.baseUrl;

在项目根目录创建一个 vue.config.js文件,可进行baseUrl配置,接口代理以及其他配置:

// vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
// 这里只列一部分,具体配置参考文档
const path = require('path')
const debug = process.env.NODE_ENV !== 'production'
module.exports = {
    // 部署生产环境和开发环境下的URL。
    // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
    //例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 baseUrl 为 /my-app/。
    //baseUrl 从 Vue CLI 3.3 起已弃用,请使用publicPath
    //baseUrl: process.env.NODE_ENV === "production" ? "./" : "/",
    publicPath: process.env.NODE_ENV === "production" ? "./" : "/",

    // outputDir: 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)
    outputDir: "./dist",
    //用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
    // assetsDir: "assets",
    //指定生成的 index.html 的输出路径  (打包之后,改变系统默认的index.html的文件名)
    indexPath: "./dist/index.html",
    //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变)
    filenameHashing: false,

    // lintOnSave:{ type:Boolean default:true } 问你是否使用eslint
    lintOnSave: true,

    /** 
     * 生产环境是否生成 sourceMap 文件
     * 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
     * */
    productionSourceMap: false,
    chainWebpack: (config) => {
        if (debug) { // 开发环境配置
            config.devtool = 'cheap-module-eval-source-map'
        } else { // 生产环境配置
            config.devtool = '#source-map'
        }
        // 修改文件引入自定义路径
        config.resolve.alias
            .set('@', path.resolve(__dirname, './src'))
            .set('@views', path.resolve(__dirname, './src/views'))
            .set('@components', path.resolve(__dirname, './src/components'))
            .set('@assets', path.resolve(__dirname, './src/assets'))
    },
    // 和 chainWebpack 类似 
    // configureWebpack: (config) => {
    // Object.assign(config, { // 开发生产共同配置, 配置别名
    //     resolve: {
    //         extensions: ['.js', '.json', '.vue'],
    //         alias: {
    //             '@': path.resolve(__dirname, './src') //设置路径别名
    //             // '@views': path.resolve(__dirname, './src/views'),
    //             // '@components': path.resolve(__dirname, './src/components'),
    //             // '@assets': path.resolve(__dirname, './src/assets')
    //         }
    //     }
    // })
    // },

    // 它支持webPack-dev-server的所有选项
    devServer: {
        host: "0.0.0.0", //指定使用地址,默认localhost,  0.0.0.0代表可以被外界访问
        port: 8080, // 端口号
        https: false, // 编译失败时刷新页面
        open: true, //配置自动启动浏览器
        hot: true, // 开启热加载
        hotOnly: false,
        // proxy: 'http://localhost:4000' // 配置跨域处理,只有一个代理

        // 配置多个代理
        // proxy: {
        //     "/api": {
        //         target: "",// 要访问的接口域名
        //         ws: true,// 是否启用websockets
        //         changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        //         pathRewrite: {
        //             '^/api': '' //这里理解成用'/api'代替target里面的地址,比如我要调用'http://40.00.100.100:3002/user/add',直接写'/api/user/add'即可
        //         }
        //     },
        //     "/foo": {
        //         target: ""
        //     }
        // }
    },
    /**
   * 第三方插件配置
   */
    pluginOptions: {}
};

你可能感兴趣的:(vue)