使用gulp搭建一个传统的多页面前端项目的开发环境
1、简介
使用gulp搭建一个传统的多页面前端项目的开发环境
- 支持
pugscsses6编译支持 - 支持开发环境和打包生成
sourceMap - 支持文件变动自动刷新浏览器,css是热更新(css改动无需刷新浏览器即可更新)
- 支持新增文件没无需重启gulp,即可改动自动刷新浏览器
- 支持eslint,使用的eslint插件是eslint-config-alloy
- 支持打包html,css,js图片压缩,css中小图片转base64
- 支持css,js文件版本hash值,文件无变动则版本hash不会改变,更好利用缓存
- 支持html中的css,js,img路径添加cdn域名前缀,css中的图片链接建议使用
相对路径 - 支持代理,便于跨域调试
2、如何使用
2.1 下载项目
(1) git clone https://github.com/lfyfly/dev-easy.git或者下载 zip包
(2)删除项目下的因此目录.git文件夹,这是我的commit记录,所以删除
(3)npm install 安装依赖
(4)npm run dev
2.2 命令
npm run dev
进入开发模式
npm run build
打包命令
npm run start
打包并且以dist为根目录开启服务器查看效果
npm run sp
把根目录下的sprites文件夹下的子目录内的所有文件夹中的png和jpg的图片,以子文件夹目录为单位生产雪碧图,文件名为子目录名
npm run lint
eslint检测
npm run fix
eslint修复
3、 约定的目录
src是源码目录,可以通过
config.srcPath进行配置,以下src只目录只是个例子,代表源码目录
3.1 src/static
静态文件目录
3.2 src/static/_vendor
第三方js,css,iconfont等
3.3 src/static/_scss
scss模块目录,里面的.scss文件不会被单独编译成css文件
3.4src/static/_pug
pug模块目录,里面的.pug文件不会被单独编译成html文件
4.5 src/static/_modules
该目录里面的.pug,.scss文件不会被单独编译成html文件
4、功能配置文件
根目录下的config.js
module.exports = {
srcPath: 'src',
pug: true,
scss: true,
babel: true,
tmpPath: 'node_modules/__tmp__',
build: {
htmlmin: true,
cssmin: true,
jsmin: true,
base64: 10 * 1024, // (bytes) 使用css中图片使用相对路径,否者无效
cssSourcemap: true,
jsSourcemap: true,
cdn: 'http://your/cdn/url/',
versionHash: true, // 版本hash
},
proxyTable: {
'/api': 'http://localhost:3000',
'/hehe': {
target: 'http://localhost:3000',
pathRewrite: {
// 地址重写
'^/hehe': '/api'
}
}
}
}
5、功能配置项详解
如不需要使用某个配置项目,直接将其注释即可
srcPath
配置目录源文件目录,默认为'src'
pug
- 值为
true时,会开启对src目录内所有的.pug文件(除src/_pug/外)编译成html src/_pug作为pug的模块目录,不会被单独编译为html文件
scss
- 值为
true时,会开启对src内所有的.scss,.sass文件(除src/_scss外)编译成scss src/_scss/作为scss的模块目录,不会被单独编译为css文件
babel
- 值为
true时,会开启对src目录内所有的.js文件(除src/static/vendor/外)编译成es5 - babel配置文件,根目录下
.babelrc文件
tmpPath
默认值为
'node_modules/__tmp__'npm run dev作为.pug,.scss,.js文件编译的临时文件目录,和src同为静态文件目录,且优先级高于src目录browserSync.init({
server: {
baseDir: [config.tmpPath, 'src'],
},
middleware,
port: 9000,
online: false
})编译后文件访问:
src/static/public/public.scss在html的访问路径为/static/public/public.css每次运行
npm run devconfig.tmpPath都会被清理
打包配置项
| config.build | 描述 |
|---|---|
| htmlmin | 值为true时开启html压缩 |
| cssmin | 值为true时开启css压缩 |
| jsmin | 值为true时开启js压缩 |
| base64 | Number类型,单位(bytes),当css图片大小小于该值时将转base64 |
css中图片地址必须为相对路径才会生效 | | cssSourcemap | 值为true时,生成cssSourcemap文件 | | jsSourcemap | 值为true时,生成jsSourcemap文件 | | cdn | 值为你的cdn地址 | | versionHash | 值为true时,生成css js文件版本hash值 | | proxyTable | 代理配置,http-proxy-middleware |
proxyTable配置实例
proxyTable: {
'/api': 'http://localhost:3000',
'/hehe': {
target: 'http://localhost:3000',
pathRewrite: {
// 地址重写
'^/hehe': '/api'
}
}
}
6、项目目录构建示例
6.1 Deom-0 见src目录
使用html,css,js构建项目
6.2 Deom-1 见src-1目录
使用pug(可选用),scss,js构建项目 将config.srcPath值设为src-1即可切换到该项目
7、其他
7.1 模块化?
推荐使用sea.js或require.js进行模块管理
7.2 为什么不在gulp中配置eslint?
推荐使用浏览器插件进行提示,还可以配置保存时自动修复eslint
7.3 js中如何判断是否为开发模式
// 当前环境为开发环境
var isDev = !!document.getElementById('__bs_script__')
注意: isDev只能在body标签内的js中这样获取,或者在DOMContenLoaded或load事件回调中初始化 isDev
使用gulp搭建一个传统的多页面前端项目的开发环境的更多相关文章
- 内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)
内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境 背景 内网开发机是 win7,只能安装 node 14 以下,而 spug 的文档项目采用的是 Facebook ...
- 搭建Spark源码研读和代码调试的开发环境
转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...
- OpenDaylight开发hello-world项目之开发环境搭建
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- gulp + webpack 构建多页面前端项目
修改增加了demo地址 gulp-webpack-demo 之前在使用gulp和webpack对项目进行构建的时候遇到了一些问题,最终算是搭建了一套比较完整的解决方案,接下来这篇文章以一个实际项目为例 ...
- 亲手搭建一个基于Asp.Net WebApi的项目基础框架1
目标:教大家搭建一个简易的前后端分离的项目框架. 目录: 1:关于项目架构的概念 2:前后端分离的开发模式 3:搭建框架的各个部分 这段时间比较闲,所以想把之前项目里用到的一些技术写到博客里来,分享给 ...
- 用 Eclipse 搭建一个简单的 Maven spring mybatis 项目(包含测试用例)
1: 先搭建一个Maven项目: 创建好后的目录: 2: 配置pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0& ...
- 前端移动App开发环境搭建
移动App开发环境安装 一.环境安装准备软件 二.node的安装 像安装普通软件一样,安装对应版本的node软件,安装好之后就可以运行npm命令行,比如npm init .npm install -g ...
- 搭建及修正Hadoop1.2.1 MapReduce Pipes C++开发环境
Hadoop目前人气超旺,返璞归真的KV理念让人们再一次换一个角度来冷静思考一些问题. 但随着近些年来写C/C++的人越来越少,网上和官方WIKI的教程直接落地的成功率却不高,多少会碰到这样那样的问题 ...
- Django项目--在开发环境运行静态页面
在项目中运行静态页面的准备工作: 开发中使用前端node.js 提供的live-server服务器作为前端开发服务器使用 linux终端中准备node环境 npm install -g live-se ...
随机推荐
- duid 配置监控
web.xml中加入 <servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class& ...
- 手写Promise原理
我的promise能实现什么? 1:解决回调地狱,实现异步 2:可以链式调用,可以嵌套调用 3:有等待态到成功态的方法,有等待态到失败态的方法 4:可以衍生出周边的方法,如Promise.resolv ...
- 【沫沫金】使用Serv-U FTP服务,搭建文件服务器
内网文件服务器安装Serv-U FTP 链接: https://pan.baidu.com/s/1G51D1enLqZCUhnprnjAITw 提取码: snah Java Web工程,引入 comm ...
- 关于 服务器ip和域名进行一个绑定
最近想让人访问我做个一个网站,但是我发现让服务器ip地址直接暴露不是很好 (做着玩) 于是就去阿里云买了一个5块1年的域名 先在网上百度了一下是怎么绑定域名的,发现全是含糊不清的信息,果然是垃圾百度 ...
- js小数计算引起的精度误差问题
我记得刚开始学js的时候学到浮点有举例0.1+0.2 它的计算结果是: 0.1+0.20.30000000000000004 很神奇的一个计算,js是弱语言,在精度上没做处理: 我就自己定义了加减乘除 ...
- 使用C#+EmguCV处理图像入门(一)
首先我们先了解一下该库的一些相关信息 OpenCV(Open Source Computer Vision Library)是一个(开源免费)发行的跨平台计算机视觉库,可以运行在Linux.Windo ...
- 欲善事先利器-IEAD插件篇
工欲善其事,必先利其器,好鞋踢好球是非常合乎逻辑的事情. --<长江七号> 同样的开场白,不一样的酒,不一样的故事. 上篇<欲善事先利器--系统篇>已经推荐了一些个人常用的效率 ...
- Vysor Pro1.9.3破解,连接 USB 数据线在电脑上远程控制 Android 手机平板/同步显示画面
Vysor PRO 破解方法 1.下载Vysor Pro, Vysor Pro下载地址 ,chrome版需要挂梯子. 下载后,能连接,但是清晰度太低,能使用的功能也很少,下面我们就开始来破解它. ...
- Journal of Proteome Research | Down-Regulation of a Male-Specific H3K4 Demethylase, KDM5D, Impairs Cardiomyocyte Differentiation (男性特有的H3K4脱甲基酶基因(KDM5D)下调会损伤心肌细胞分化) | (解读人:徐宁)
文献名:Down-Regulation of a Male-Specific H3K4 Demethylase, KDM5D, Impairs Cardiomyocyte Differentiatio ...
- 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析【转载】
前言:大数据,人工智能,工业物联网,5G 已经或者正在潜移默化地改变着我们的生活.在信息技术快速发展的时代,谁能抓住数据的核心,利用有效的方法对数据做数据挖掘和数据分析,从数据中发现趋势,谁就能做到精 ...