前端写一个 shell 脚本来执行 npm 命令

目的从 url 获取前端请求基地址, 通过环境变量注入

  1. shell 脚本
#!/bin/bash

parse_json() {
  echo "${1//\"/}" | sed "s/.*$2:\([^,}]*\).*/\1/"
}

RESULT=$(parse_json $(curl -s https://www.fastmock.site/mock/cd8e3b8f92711dd9e4a424cf0603e8fe/api/getHost) "data")
# 注入变量
npm run build -- --inject_host=$RESULT
  1. vue.config.js
/**
 * @description: 判断是否为生产环境
 * @param {*}
 * @return Boolean
 */
const isProduct = () => {
  return process.env.NODE_ENV == 'production'
}

// 环境参数
const argv = process.argv
module.exports = {
  publicPath: './',
  chainWebpack: config => {
    config.when(isProduct(), () => {
      config.plugin('define').tap(args => {
        let name = 'process.env'
        let customHost = null

        argv.forEach(item => {
          if (/inject_host/.test(item)) {
            customHost = JSON.stringify(item.split('=')[1])
            return true
          }
        })

        if (customHost) {
        // 在这里如果有 VUE_APP_BASE_API 就覆盖, 没有就新增这个变量
          args[0][name] = Object.assign(args[0][name], {
            VUE_APP_BASE_API: customHost
          })
        }
        return args
      })
    })
  }
}

npm 注入参数 (阮一峰)
获取json参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值