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

news2025/2/3 20:03:12

参考博文:
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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP协议(2) 和 数据链路层协议基础

IP协议续 1.路由选择 在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择 举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地 路由的过程,其实就是样子问路的过程 1.当IP数据包到达路由器的时候,会查看目的IP 2.路由器…

HAL库配置PWM模式

一、什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制。通过控制高低电平在一个周期内的占比从而输出一定的电压。 向上计数原理介绍 ​PWM的一个周期 定时器从0开始向上计数 当0-t1段,定时器计数器TIMx_CNT值小于…

Springboot-前后端分离——第三篇(三层架构与控制反转(IOC)-依赖注入(DI)的学习)

本篇主要对ControllerServiceDAO三层结构以及控制反转(IOC)与DI(依赖注入)进行总结。 目录 一、三层架构: Controller/Service/DAO简介: 二、控制反转(IOC)-依赖注入(DI): 概念介绍: DOC与…

学校如何提升教学效率?这种方法要牢记!

随着教育信息化的发展,学校管理也逐渐借助先进的技术手段实现智能化、高效化。在线巡课系统作为其中的重要组成部分,为学校领导提供了便捷而有效的管理工具。 客户案例 中小学校长办公室 在中小学校长办公室,校长通过在线巡课系统可以实时查…

js 设置、获取、删除标签属性以及H5自定义属性

1. 设置标签属性 使用setAttribute()(‘属性名’, ‘属性值’)方法可以添加、修改、删除属性。   下面的demo是为input添加、修改、删除value属性&#xff1a; 1.1. HTML <input type"text" class"input"> <input type"text" class…

apk反编译修改教程系列---修改apk的默认颜色 布局颜色 手机电脑同步演示【十】

往期教程&#xff1a; apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…

centos7 安装 java17 安装 idea

删除旧版本的java或者说是自带的&#xff0c;免得干扰 查找java [wanglcentos7 java]$ rpm -qa|grep javajava-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch …

获取响应请求头里的信息

如图所示这是一个导出excel的接口&#xff0c;后端响应头部&#xff0c;要获取Content-Disposition里的值&#xff0c; 由于命名问题&#xff0c;没有办法用res.Content-Disposition的方式获取它的值 按理来说使用res[Content-Disposition]就可以获取到&#xff0c;但是咩有&…

MySql主从同步,同步SQL_ERROR 1032解决办法

1.登录从库 mysql -u root -p 2.输入命令查看状态 SHOW SLAVE STATUS\G; 3.找到对应的错误数据位置 Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: app_push_centerReplicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Tabl…

【C++】vector的简单使用和实现

vector就是我们之前数据结构学的顺序表&#xff0c;这篇博客就是说一说它的简单使用和底层实现 文章目录 简单使用模拟实现 简单使用 首先&#xff0c;我们看看它的构造函数 我们比较常用的也就是第二种&#xff0c;就是第一个参数是要存的数据个数&#xff0c;第二个是要填…

Linux系统Shell脚本-----------正则表达式 文本三剑客之---------grep、 sed

一、正则表达式 1.前言 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在Linux中也就是代表我们定义的模式模板&…

HAL库硬件SPI点亮板载LCD屏幕

1、本节内容介绍 1.1、HAL库硬件SPI 在cubemx中的配置及注意事项; 1.2、HAL库SPI详解与结构介绍; 1.3、实现硬件SPI驱动板载ST7789显示屏,240*240像素&#xff1b; 源码地址&#xff1a;https://gitee.com/MR_Wyf/hal-cubemx-rt-thread/tree/hal_rttNano_st7789_menu/ 或者…

多线程互斥量进阶

问题 一个线程多次尝试获取同一个互斥量&#xff0c;会发生什么&#xff1f; 不同类型的互斥量 Linux 上的示例程序 死锁的概念 等待关系 线程所需资源被其他线程所持有&#xff0c;进而必须等待 (无法继续执行) 循环等待 当线程之间出现循环等待关系时&#xff0c;即&…

2024美赛MCM Problem A: Resource Availability and Sex Ratios资源可用性和性别比例 完整代码以及思路分享

虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。例如&#xff0c;美洲短吻鳄孵化卵的巢穴的温度会影…

RIP——路由信息协议

目录 1 内部网关协议 RIP 1.1 协议 RIP 的工作原理 1.2 RIP“距离”的定义 1.3 RIP 协议的三个特点 1.4 RIP 协议的优缺点 1.5 路由表的建立 路由表主要信息和更新规则 2 距离向量算法 3 RIP2 报文 4 坏消息传播得慢 5 启动RIP 启动RIP: router rip 命令 启用和检…

TCP 连接掉线自动重连

文章目录 TCP 连接掉线自动重连定义使用连接效果 TCP 接收数据时防止掉线。TCP 连接掉线自动重连。多线程环境下TCP掉线自动重连。 欢迎讨论更好的方法&#xff01; TCP 连接掉线自动重连 定义 定义一个类&#xff0c;以编写TCP连接函数Connect()&#xff0c;并且&#xff1a…

vue-3d-loader

vue-3d-loader - npm GitHub - king2088/vue-3d-loader: VueJS and threeJS 3d viewer 是对 vue-3d-model 的改进&#xff0c;降低Threejs使用难度 # 默认安装 "vue-3d-loader": "^1.3.4", 只支持vue2 npm i vue-3d-loader # vue3 需要安装2版本&#xf…

2024美赛 MCMProblem B: Searching for Submersibles 问题B 搜索潜水器 完整思路代码分享

总部位于希腊的小型海上巡航潜艇&#xff08;MCMS&#xff09;公司&#xff0c;制造能够将人类运送到海洋最深处的潜水器。潜水器被移动到该位置&#xff0c;并不受主船的束缚。MCMS现在希望用他们的潜水器带游客在爱奥尼亚海底探险&#xff0c;寻找沉船。然而&#xff0c;在他…

homeword_day1

第一章 命名空间 一&#xff0e;选择题 1、编写C程序一般需经过的几个步骤依次是&#xff08; B &#xff09; A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据…

Servlet简述

Servlet是动态web资源开发技术&#xff0c;其实就是一个接口&#xff0c;将来定义Servlet实现类时&#xff0c;都必须实现该接口&#xff0c;并让web服务器运行Servlet 1.快速入门 使用注释配置访问路径在Servlet3.0之后应用&#xff0c;在此之前都是使用xml配置文件来配置的。…