【gulp+jq+html】添加环境变量,并在js中使用(判断环境,更改api接口域名)+ 附gulpfile.js代码

参考博文:
gulp分离环境
gulp中如何配置环境变量
gulp环境变量配置

1、安装cross-env插件

npm install cross-env -d

2、package.json更改scripts

 "scripts": {
    "clean": "gulp clean",
    "serve:test": "cross-env NODE_ENV=test gulp",
    "serve:prod": "cross-env NODE_ENV=prod gulp",
    "build:test": "cross-env NODE_ENV=test gulp",
    "build:prod": "cross-env NODE_ENV=prod gulp",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

3、gulpfile.js中生成环境变量文件env.js

var fs = require('fs');
var env = 'test';
function set_env(type) {
  env = type || env;
  // 生成env.js文件,用于开发页面时,判断环境
  fs.writeFile("./src/assets/scripts/env.js", 'function ENV (){ return "' + env + '"};', function (err) {
    err && console.log(err);
  });
}
set_env(process.env.NODE_ENV)

生成的env.js内容:
在这里插入图片描述

4、在js中使用环境变量,判断api接口域名

  1. 先在html中引入env.js文件(注意!!一定要在业务js之前引用)在这里插入图片描述
  2. 然后再在业务js中使用
const _PATH = ENV() === 'test' ? 'http://xx.xx.xxx.xx' : 'https://xxxx.xxx.com'

附gulpfile.js完整代码:

const gulp = require('gulp')
const loadPlugins = require('gulp-load-plugins')
const plugins = loadPlugins()
const cssmin = require('gulp-cssmin')
const sass = require('gulp-sass')(require('sass'))
const autoprefixer = require('gulp-autoprefixer')
const del = require('del')
const htmlmin = require('gulp-htmlmin')
const uglify = require('gulp-uglify')
const gulpServer = require('gulp-webserver')
const browserSync = require('browser-sync');
const bs = browserSync.create();//创建一个开发服务器
const fileinclude = require('gulp-file-include');

console.log('环境变量:' + process.env.NODE_ENV)



var fs = require('fs');
var env = 'test';
function set_env(type) {
  env = type || env;
  // 生成env.js文件,用于开发页面时,判断环境
  fs.writeFile("./src/assets/scripts/env.js", 'function ENV (){ return "' + env + '"};', function (err) {
    err && console.log(err);
  });
}
set_env(process.env.NODE_ENV)


const jsHandler = () => {
  return gulp
    .src('src/assets/scripts/*.js', { base: 'src' })
    .pipe(plugins.babel({ presets: ["@babel/env"] })) //preset-env
    .pipe(uglify())
    .pipe(gulp.dest('dist'))
}
const jsHandler2 = () => {
  return gulp
    .src('src/assets/scripts/other/*.js', { base: 'src' })
    .pipe(gulp.dest('dist'))
}

const element = () => {
  return gulp
    .src('src/assets/element/**', { base: 'src' })
    .pipe(gulp.dest('dist'))
}

const fileincludeHandler = () => {
  return gulp
    .src('src/*.html')
    .pipe(fileinclude({
      prefix: '@@',//变量前缀 @@include
      basepath: './src/partials',//引用文件路径
      indent: true//保留文件的缩进
    }))
    .pipe(gulp.dest('dist'))
}

const cssHandler = () => {
  return gulp
    .src('./src/**/*.css', { base: 'src' })
    .pipe(autoprefixer())//自动添加前缀 autoprefixer
    .pipe(cssmin())
    .pipe(gulp.dest('./dist'))
}

const sassHandler = () => {
  return gulp
    .src('./src/**/*.scss', { base: 'src' })
    .pipe(sass())//转成css
    .pipe(autoprefixer())//自动添加前缀 autoprefixer
    .pipe(cssmin())
    .pipe(gulp.dest('./dist'))
}

const htmlHandler = () => {
  return gulp
    .src('./src/**/*.html')
    .pipe(htmlmin({
      collapseInlineTagWhitespace: true
    }))
    .pipe(gulp.dest('dist'))
}

const publicHandler = () => {
  return gulp.src('public/**', { base: 'public' })
    .pipe(gulp.dest('dist'))
}

const imagesHandler = () => {
  return gulp.src('src/assets/images/**', { base: 'src' })
    // .pipe(plugins.imagemin())
    .pipe(gulp.dest('./dist'))
}

const fontsHandler = () => {
  return gulp.src('src/assets/fonts/**', { base: 'src' })
    // .pipe(plugins.imagemin())
    .pipe(gulp.dest('./dist'))
}

const clean = () => {
  return del(['dist', 'release'])
}

const webHandler = () => {
  bs.init({
    notify: false,//唤醒浏览器后右上角落的提示
    open: false,//是否自动打开
    // port: 2000,//自定义端口, 默认3000
    livereload: true,
    files: 'dist/**',//监听哪些文件发生了变化
    server: {
      // baseDir: 'dist',//基础目录
      baseDir: ['dist', 'src', 'public'],//dist下找到会到src, public下寻找
      routes: {
        '/node_modules': 'node_modules'
      }
    }
  })
  gulp.watch('./src/**/*.scss', sassHandler)
  gulp.watch('./src/**/*.js', jsHandler)
  gulp.watch('./src/**/*.html', gulp.series(htmlHandler, fileincludeHandler))
}

module.exports.default = gulp.series(
  clean,
  gulp.parallel(cssHandler, sassHandler, htmlHandler, jsHandler, jsHandler2, publicHandler, element, imagesHandler, fontsHandler),
  fileincludeHandler,
  webHandler,
)
module.exports.cssHandler = cssHandler
module.exports.sassHandler = sassHandler
module.exports.htmlHandler = htmlHandler
module.exports.jsHandler = jsHandler
module.exports.jsHandler2 = jsHandler2
module.exports.clean = clean
module.exports.webHandler = webHandler
module.exports.publicHandler = publicHandler
module.exports.element = element
module.exports.fileincludeHandler = fileincludeHandler

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/360430.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

503 Service Temporarily Unavailable nginx 原因和解决办法

前言 HTTP 503 Service Temporarily Unavailable 错误通常表示服务器无法处理请求,可能是由于服务器过载、维护或其他临时性问题导致的。在 Nginx 中,这种错误通常与后端服务的可用性问题相关。以下是可能的原因和解决办法: 正文…

UE4 CustomDepthMobile流程小记

原生UE opaque材质中获取CustomDepth/CustomStencil会报错 在其Compile中调用的函数中没有看到报错逻辑 材质节点的逻辑都没有什么问题,所以看一下报错 在HLSLMaterialTranslator::Translate中 修改之后 mobile流程的不透明材质可以直接获取SceneTexture::customd…

知识点积累系列(一)golang语言篇【持续更新】

云原生学习路线导航页(持续更新中) 本文是 知识点积累 系列文章的第一篇,记录golang语言相关的知识点 1.结构体的mapstructure是什么 mapstructure:"default" mapstructure是一个Go语言的库,用于将一个map中的值映射到…

“量子+半导体”!罗姆半导体与量子公司Quanmatic进行应用探索

​内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨琳梦 卉可 深度好文:1500字丨10分钟阅读 2023年,日本半导体制造商Rohm(罗姆)与量子算法解决方案公司Quanmatic达成合作…

StarRocks -- 基础概念(数据模型及分区分桶)

1. 数据模型 StarRocks提供四种数据模型: Duplicate Key, Aggregate Key, Unique Key, Primary Key 1.1 Duplicate Key 适用场景: 分析原始数据,如原始日志和原始操作记录。可以使用多种方法查询数据,不受预聚合方法的限制。加…

【Linux】信号量

信号量 一、POSIX信号量1、信号量的原理2、信号量的概念(1)PV操作必须是原子操作(2)申请信号量失败被挂起等待 3、信号量函数4、销毁信号量5、等待信号量(申请信号量)6、发布信号量(释放信号量&…

高校教学方法论简述

简述。 背景 高校教师的任务:教学、科研、服务、辅导等;高校教师通常缺乏课程与教学的专业基础;应用型高校的课程教学、科研不同于学术型高校;民办应用型高校教师如何安身立命?应用型高校的专业课程与教学特色 教完--…

02-opencv简单实例效果和基本介绍-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素…

Linux Archcraft结合内网穿透实现SSH远程连接

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定SSH公网地址6. SSH固定地址连接7. 结语 Archcraft是一个基于Arch Linux的Linux发行版,它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。…

电加热热水器上架亚马逊美国站需要的UL174报告

电加热热水器上架亚马逊美国站需要的UL174报告 家用热水器出口美国需要办理UL174测试报告。 热水器就是指通过各种物理原理,在一定时间内使冷水温度升高变成热水的一种装置。分为制造冷气部分和制造热水部分。其实这两个部分又是紧密地联系在一起,密不可…

flask+django基于python的网上美食订餐系统_3lyq1

设计旨在提高顾客就餐效率、优化餐厅管理、提高订单准确性和客户的满意度。本系统采用 Python 语言作为开发语言,采用Django框架及其第三方库和第三方工具来进行开发。该方案分为管理员功能模块,商家功能模块以及用户前后功能模块三部分。开发前期根据用…

管理的四种风格

前言 管理的四种风格,一般的领导大概就是这几种管理模式,告知,辅导,参与,授权,还有就是乱搞式(神经病模式)。 一、告知式 告知式是指组织通过正式、明确的渠道,将信息传达给员工。这种方式通常用于传递基本的规章制度、工作流程、政策文件等。告知式的作用在于确保员…

SRC实战 | 信息泄露挖掘

本文由掌控安全学院 - 叴龙 投稿 1. 信息搜集 首先老语法先搜集一波,毕竟没有钓鱼和sg的能力,只能找注册站去挖挖了。 web.title”XX大学”&&web.body”忘记密码”&&web.body”注册” 2. 漏洞挖掘 这里找到一个可以注册网站接口&…

增量式PID和PWM输出控制比例阀开度

SMART PLC增量式PID算法公式和梯形图代码,请参考下面链接文章: https://rxxw-control.blog.csdn.net/article/details/125767636https://rxxw-control.blog.csdn.net/article/details/125767636PWM输出详细介绍 https://rxxw-control.blog.csdn.net/article/details/124083…

Linux下如何编译C/C++代码?从.c到.exe经历了什么?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

【深度学习每日小知识】Model Accuracy 模型准确率

Model Accuracy 模型准确率 模型准确性是衡量机器学习 (ML) 模型基于数据做出预测或决策的能力的指标。它是用于评估 ML 模型性能的常用指标,可用于比较不同模型的性能或评估特定模型对于给定任务的有效性。 有多种不同的方法来衡量模型的准确性,具体取…

C++入门学习(二十)与或非

逻辑运算符的符号表示: 与:&&或:||非:! a && b如果a和b都为真,则结果为真,否则为假a || b如果a和b有一个为真,则结果为真,二者都为假时,结…

奔驰源代码意外泄露,暴露内部敏感数据

近日,RedHunt 实验室的研究人员发现,梅赛德斯-奔驰无意中留下了可在线访问的私钥,暴露了内部数据,包括公司的源代码。目前尚不清楚数据泄露是否暴露了客户数据。 梅赛德斯-奔驰(Mercedes-Benz)是德国著名的…

Github 上传项目(个人令牌token)

1.点击 github头像 : setting -> Developer Settings -> Personal access tokens 2.在要上传的文件夹下运行以下命令: git init git commit -m "first commit" git branch -M main 利用以下命令模…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷10

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选…