vite插件

import {
  Plugin,
  ResolvedConfig,
} from 'vite'
export interface Options {
  /** Value of script src */
  inject?: string
  /**
   * 匹配位置 
   * params {body-after}   在 </body> 前引入
   * params {head-after}   在 </head> 前引入
   * params <!--seo-cdn-->} seo 需要引入的js
   * */
  local?: string,
  /**
   * 环境变量 
   * params {release}  测试
   *params {production}  生产
   *params {development}  本地
   * */
  mode?: string

}
export function expandPlugin(options: Options | Options[] = {}): any {
  let config: ResolvedConfig;
  let opts = Array.isArray(options) ? options : [options]
  return {
    name: 'expand-plugin',
    configResolved(_config: any) {
      config = _config;
      // console.log('config', config.env.MODE)
    },
    transformIndexHtml(html: string) {

      let env = config.env.MODE || 'development';
      for (let k in opts) {
        if (opts[k].inject) {
          if (!opts[k].mode || opts[k].mode == env)
            html = replaceHtml(html, opts[k].inject, opts[k].local);
        }
      }
      return html
    },
    apply: 'build',//serve 'build'
  }
}

function replaceHtml(html: string, inject: any, local: string = '') {
  if (local === 'head-after') {
    html = html.replace(`</head>`, `${inject}</head>`)
  } else if (local === 'body-after') {
    html = html.replace(`</body>`, `${inject}</body>`)
  } else if (local === '<!--seo-cdn-->') {
    html = html.replace(`<!--seo-cdn-->`, `${inject}`)
  } else html = html.replace(`</body>`, `${inject}</body>`)

  return html
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值