vue cli 4定义站点发布在子目录下的两则vue.config.js

官方指导:

https://cli.vuejs.org/zh/config/#baseurl

亲测有用:

module.exports = {
  // 项目部署的基础路径
  // 我们默认假设你的应用将会部署在域名的根部,
  // 比如 https://www.my-app.com/
  // 如果你的应用时部署在一个子路径下,那么你需要在这里
  // 指定子路径。比如,如果你的应用部署在
  // https://www.foobar.com/my-app/
  // 那么将这个值改为 `/my-app/`
  baseUrl: '/Reader/dist/',  /*这个是我存放在github在线预览的项目*/
 
  // 将构建好的文件输出到哪里
  outputDir: 'dist',
 
  // 放置静态资源的地方 (js/css/img/font/...)
  assetsDir: '',
 
  // 用于多页配置,默认是 undefined
  pages: {
    index: {
      // 入口文件
      entry: 'src/main.js',  /*这个是根入口文件*/
      // 模板文件
      template: 'public/index.html',
      // 输出文件
      filename: 'index.html',
      // 页面title
      title: 'Index Page'
    },
    // 简写格式
    // 模板文件默认是 `public/subpage.html`
    // 如果不存在,就是 `public/index.html`.
    // 输出文件默认是 `subpage.html`.
    subpage: 'src/main.js'    /*注意这个是*/
  },
 
  // 是否在保存的时候使用 `eslint-loader` 进行检查。
  // 有效的值:`ture` | `false` | `"error"`
  // 当设置为 `"error"` 时,检查出的错误会触发编译失败。
  lintOnSave: true,
 
  // 使用带有浏览器内编译器的完整构建版本
  // 查阅 https://cn.vuejs.org/v2/guide/installation.html#运行时-编译器-vs-只包含运行时
  runtimeCompiler: false,
 
  // babel-loader 默认会跳过 node_modules 依赖。
  // 通过这个选项可以显式转译一个依赖。
  transpileDependencies: [/* string or regex */],
 
  // 是否为生产环境构建生成 source map?
  productionSourceMap: true,
 
  // 调整内部的 webpack 配置。
  // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/webpack.md
  chainWebpack: () => {},
  configureWebpack: () => {},
 
  // CSS 相关选项
  css: {
    // 将组件内的 CSS 提取到一个单独的 CSS 文件 (只用在生产环境中)
    // 也可以是一个传递给 `extract-text-webpack-plugin` 的选项对象
    extract: true,
 
    // 是否开启 CSS source map?
    sourceMap: false,
 
    // 为预处理器的 loader 传递自定义选项。比如传递给
    // sass-loader 时,使用 `{ sass: { ... } }`。
    loaderOptions: {},
 
    // 为所有的 CSS 及其预处理文件开启 CSS Modules。
    // 这个选项不会影响 `*.vue` 文件。
    modules: false
  },
 
  // 在生产环境下为 Babel 和 TypeScript 使用 `thread-loader`
  // 在多核机器下会默认开启。
  parallel: require('os').cpus().length > 1,
 
  // PWA 插件的选项。
  // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md
  pwa: {},
 
  // 配置 webpack-dev-server 行为。
  devServer: {
    open: process.platform === 'darwin',
    host: '0.0.0.0',
    port: 8080,
    https: false,
    hotOnly: false,
    // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理
    proxy: null, // string | Object
    before: app => {}
  },
 
  // 三方插件的选项
  pluginOptions: {
    // ...
  }
}

下面未测:

// 引用 npm ip包,用来获取本地ip等操作,文档地址:https://www.npmjs.com/package/ip
const ip = require('ip')
// 引用path包(path属于node自带包,无需在package.json中引用安装即可直接引用),用来操作路径,文档地址:https://nodejs.org/docs/latest/api/path.html
const path = require('path')
// 引用 npm html-webpack-inline-plugin包,用来将html中inline标识的<script>,<link>,<img>标签的元素内容压缩进html中
const HtmlWebpackInlinePlugin = require('html-webpack-inline-plugin')
// 引用 npm filemanager-webpack-plugin包,用来操作文件,允许复制,归档成 (.zip/.tar/.tar.gz),移动,删除文件和目录在构建前或者构建前, 文档地址:https://www.npmjs.com/package/filemanager-webpack-plugin
const FileManagerPlugin = require('filemanager-webpack-plugin')
// 判断时候是生产环境
const isProd = process.env.NODE_ENV === 'production'
// 定义一些公用参数,以供项目中使用
const pluginOptions = {
  // 项目名,定义成我们在云平台申请的应用名,类似 ***.vivo.com.cn
  projectName: 'huwd',
  // 本地ip
  host: ip.address(),
  // 定义端口
  port: 8080,
  // 登录的地址,需要一个client_id
  loginPath: 'https://psport.deio.com.cn/v3/web/login/authorze?client_id={client_id}',
  // 埋点上报的地址
  stPath: 'https://st-demss.reso.com.cn',
  // CDN域名,在云平台申请到的项目静态资源域名
  cdnPath: '/'
}

// vue.config.js导出的配置项
module.exports = {
  pluginOptions,
  // 测试服务启动时显示的ip,端口,代理配置
  devServer: {
    // host: pluginOptions.host,
    port: pluginOptions.port,
    public: `${pluginOptions.host}:${pluginOptions.port}`,
    // 默认会自动打开浏览器
    open: true,
    disableHostCheck: true,
    proxy: {
      '/api': {
        target: 'http://172.225.182.155:8080/ssub/',
        // target: 'http://172.252.182.75:8088/ssub/',
        // target: 'http://scb.api.test.ves.xyz/',
        changeOrigin: true,
        secure: false,
        pathRewrite: {
          '^/api': '/api'
        }
      }
    }
  },

木易杨@:
// 部署应用包时的基本 URL,生成环境使用的是公用参数中的cdnPath
  publicPath: isProd
    ? pluginOptions.cdnPath : '/',
  lintOnSave: true,
  // 是否生成sourcemap文件,生成环境不生成以加速生产环境构建
  productionSourceMap: !isProd,
  // 静态资源文件的目录
  assetsDir: 'static',
  // css是否开启sourcemap,生成环境不生成
  css: {
    sourceMap: !isProd
  },
  configureWebpack: config => {
    config.optimization && (config.optimization.splitChunks.minSize = 10000)
    config.plugins.push(
      new HtmlWebpackInlinePlugin()
    )
    if (isProd) {
      config.plugins.push(
        // Webpack完成捆绑过程后要执行的命令:删除dist目录下ignore目录,prod-md5-zip目录
        new FileManagerPlugin({
          onEnd: [{
            delete: [              `./dist/ignore`,
              './prod-md5-zip'
            ]
          }]
        })
      )
    }
    // 单个asset静态资源文件的大小最大为409600B==>400KB,超过400KB则会给出警告
    config.performance = {
      maxAssetSize: 1024 * 400
    }
  },
  chainWebpack: config => {
    config
      .plugin('html')
      .tap(args => {
        // 将系统配置信息注入到HtmlWebpackInlinePlugin
        Object.assign(args[0], pluginOptions)
        // 设置页面标题的icon
        args[0].favicon = path.join(__dirname, './src/assets/aaa.ico')
        return args
      })
    config.plugin('define').tap(args => {
      args[0]['CONFIG'] = JSON.stringify(pluginOptions)
      return args
    })
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • Vue CLI 3 https://cli.vuejs.org/zh/guide/ Vue CLI 是一个基于 V...
    smalike阅读 576评论 0 1
  • 一、介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。有三个组件: CLI:@vue/cli...
    zhyzhyzz阅读 30,711评论 1 17
  • 姓名:李睿 公司:海南美兰美购城实业有限公司 组别:第420期谦虚四组 【日精进打卡第81天】 【知~学习】 《六...
    木子灬睿睿阅读 88评论 0 0
  • 我病很久了。我试图不去想这些。于是我来到陌生的地方。只有这种方法能分辨,令人作呕的到底是自己还是周遭。 这世界真美...
    吸烟至死阅读 302评论 0 0
  • [现象]当一个人遭遇万念俱灰的困境,甚至决心一走(死)了之的时候,居然又那么活了下来并兀自苦苦挣扎着要继续活下去。...
    古蓝云阅读 190评论 0 2