# gulp-easy
**Repository Path**: ZZK-1989/gulp-easy
## Basic Information
- **Project Name**: gulp-easy
- **Description**: 已过时[废弃]
- **Primary Language**: NodeJS
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-03-07
- **Last Updated**: 2021-03-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 修改自 lfyfly/gulp-easy 修改记录
- 2019-3-7 :删除 pug 支持
- 2019-3-7 :添加 gulp-file-include 支持 html 文件包含
- 2019-3-7 :添加 compressing 支持打包 zip
# gulp-easy [github](https://github.com/lfyfly/gulp-easy.git)
## 1、简介
使用 gulp 搭建一个传统的多页面前端项目的开发环境
- 支持`scss` `es6`编译支持
- 支持开发环境和打包生成`sourceMap`
- 支持文件变动自动刷新浏览器,css 是热更新(css 改动无需刷新浏览器即可更新)
- 支持新增文件没无需重启 gulp,即可改动自动刷新浏览器
- 支持命令生成雪碧图和对应 css
- 支持 eslint,使用的 eslint 插件是[eslint-config-alloy](https://github.com/AlloyTeam/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 build`后执行`npm run webp`
#### 默认情况下 html 中的`img[src]`会被处理成`img[data-src]`
- 当 img 的 src 为`http`开头则会被忽略该处理
- 当 img 的 className 中包含`not-webp`开头则会被忽略该处理
### `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/_scss`
scss 模块目录,里面的`.scss`文件不会被单独编译成 css 文件
#### 3.4`src/_pug`
pug 模块目录,里面的`.pug`文件不会被单独编译成 html 文件
#### 4.5 `src/_modules`
该目录里面的`.pug`,`.scss`文件不会被单独编译成 html 文件
## 4、功能配置文件
根目录下的`config.js`
```
module.exports = {
srcPath: 'src',
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 dev` `config.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](https://github.com/chimurai/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