FIS3是国内百度公司产出的一款前端工程构建工具,FIS3可以解决前端工程中性能优化、资源加载(异步、同步、按需、预加载、依赖管理、合并、内嵌)、模块化开发、自动化工具、开发规范、代码部署等问题,首先来简单的实现资源合并压缩提高性能等问题。

安装fix3

npm install -g fis3

创建项目目录

cd 进入此目录中初始化,执行

fis3 init

对需要的插件进行安装 ,比如安装scss编译插件:

npm install -g --save-dev fis-parser-node-sass

注意:如果 fis-parser-node-sass 安装失败,请卸载nodejs,安装低版本即可

让 fis3 产出能够支持相对路径。

npm install -g fis3-hook-relative

常用fis3插件 http://fis.baidu.com/fis3/docs/common-plugin.html

配置文件

打开fis-conf.js 做相应的配置

// 保持发布使用相对路径
fis.hook('relative');
fis.set('domain_test', '');
// 预发布环境
fis.set('domain_pre', 'http://test.zuobaiquan.com');
// 线上环境
fis.set('domain_build', 'http://zuobaiquan.com');
// 定义版本号
fis.set('version', '1.0.0'); fis.set('project.files', [
"tpl/**/*.html"
]); fis.set('project.files', [
'*.css',
'js/**',
'images/**',
'*.html'
]); fis.match("*", {
relative: true
}) //添加时间戳,解决缓存。
.match('*.{js,css,png}', {
useHash: true
})
.match('::package', {
spriter: fis.plugin('csssprites', {
htmlUseSprite: true,
styleReg: /(<style(?:(?=\s)[\s\S]*?["'\s\w\/\-]>|>))([\s\S]*?)(<\/style\s*>|$)/ig,
margin: 5
})
})
.match('/css/*.scss', {
rExt: '.css',
parser: fis.plugin('node-sass', {
// options...
})
})
.match('css/*.{css,scss}', {
preprocessor: fis.plugin('autoprefixer', {
"browsers": ["Android >= 2.1", "iOS >= 4", "ie >= 8", "firefox >= 15"],
"cascade": true
})
})
.match('/css/*.{scss,css}', {
useSprite: true,
optimizer: fis.plugin('clean-css')
})
.match('/js/*.js', {
parser: fis.plugin('babel-5.x'),
// fis-optimizer-uglify-js 插件进行压缩,已内置
optimizer: fis.plugin('uglify-js')
})
.match('images/*.png', {
optimizer: fis.plugin('png-compressor', {
type: 'pngquant'
})
})
.match('/css/(*.{png,gif})', {
release: '/images/sprite/$1$2'
}); // fis.media('production').match('/js/*.js', {
// parser: fis.plugin('jdists', {
// remove: "debug"
// })
// }) fis.media('test')
.match("*", {
domain: "${domain_test}",
}); fis.media('pre')
.match("*", {
domain: "${domain_pre}",
}); fis.media('build')
.match('*', {
domain: "${domain_build}"
})

如果打包build 不需要某些文件夹,可配置:

fis.match('/tpl/*', {
// 设置 release 为 false,不再产出此文件
release: false
})
开发阶段命令: fis3 server stop && fis3 server clean && fis3 server start -p  && fis3 release test --verbose -wLc
预发布: fis3 release pre --verbose -cd ./pre
发布阶段:fis3 release build --verbose -cd ./dist

fis3 server stop //终止服务 
fis3 server clean //清除服务目录下的文件 
fis3 server start -p 1111 //启动服务,端口号是1111 (不加-p 1111的话默认端口号是8080) 
fis3 release test –verbose -wLc //调试模式 不会关闭cmd

项目目录结构

建议安装  fis-parser-babel-5.x 插件,这样就支持 es6、es7 或者 jsx 编译成 es5 啦,是不是很溜!

npm install -g --save-dev fis-parser-babel-.x

fis-conf.js配置:

fis.match('*.js', {
parser: fis.plugin('babel-5.x')
})

源码地址:https://github.com/zuobaiquan/framework/tree/master/基于fis3前端工具构建的静态页面框架

利用fis3构建前端项目工程的更多相关文章

  1. 如何使用Docker构建前端项目

    原文链接 Docker单独部署前端项目和Node项目是非常便捷的,在这里分享一下Docker的使用,主要聊聊它的部署实践.(我是window10专业版安装Docker) Docker Docker是一 ...

  2. vue 构建前端项目并关联github

    这几天尝试用node开发一个网站,后端的接口已经初步开发完成,现在开始构建前端的项目,记录下过程,在学习下吧. 用vue-cli 构建项目,myproject.(构架过程略过) 每次在本地构建项目后和 ...

  3. Webpack构建前端项目

    前言 公司据说要搞前后端分离,趁这两天项目完成的差不多,抓紧时间学习一下前端知识 现在流行前端项目工程化,那么第一个问题就是如何创建工程(项目),第一次玩webpack 通过 NPM 创建项目 # 创 ...

  4. jenkins自动构建前端项目(window,vue)

    我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...

  5. 如何利用gulp构建前端自动化

    1,使用 gulp.watch 来监听文件自动打包 在上篇文章中,介绍了如何利用webpack来为项目做打包编译等工作,其中介绍到在我们开发的时候,经常改动js,因为我们文件是引用编译后的js文件,若 ...

  6. 简单的利用nginx部署前端项目

    网上有很多教程写的一大堆东西,新手可能会有点看不懂,现在我写这篇文章是为了更好的帮助新手,如何将自己的前端项目部署到自己的服务器上. 首先我们必须要有一台自己的ubuntu服务器,如果没有可以去阿里云 ...

  7. 用gulp替代fekit构建前端项目

    https://segmentfault.com/a/1190000003060016 离开qunar有一个多月了,在离开的时候就决定不再用fekit.做出这个决定并不是因为fekit不好,恰恰相反, ...

  8. 【gulp】gulp + browsersync 构建前端项目自动化工作流

    什么是 gulp? gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.gulp.js 是基于 node.js 构建的,利用 node.js 流的威力,你可以快速构 ...

  9. SpringMVC拓展——利用maven构建springMVC项目

    一.构建项目结构 首先需要构建一个符合目录结构的maven项目 file->new->maven project,勾选 create a simple project->next / ...

随机推荐

  1. java新知识系列 一

    内联函数: 所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度. 对应Java语言中也有一个关键字final ...

  2. Git:五、操作远程仓库

    0.一般流程 1)自己新写:GitHub创建有README的库 -> clone到本地 2)修改已有:GitHub上fork别人的仓库 -> clone自己账号下的库到本地 1.创建库 右 ...

  3. Anaconda安装sasl,thrift,thrift-sasl,PyHive连接Hive

    一.安装sasl 安装失败,前往:https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl下载对应自己python版本的sasl 本地安装: 二.安装thrif ...

  4. Centos 7 安装 ifconfig 管理命令

    1. 安装的需求背景 我们知道ifconfig 命令可以用于查看.配置.启用或禁用指定网络接口,如配置网卡的IP地址.掩码.广播地址.网关等,功能不可谓不丰富. 此命令的功能和windows系统的ip ...

  5. 一些常用的meta标签

    <!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...

  6. Leaflet实现动态线路

    一.引用Leaflet脚本样式,和Leaflet Ant Path 插件 下载地址: Leaflet:https://leafletjs.com/download.html Leaflet Ant P ...

  7. python进阶之time模块详解

    Time模块 Time模块包含的函数 Time模块包含了一下内置的函数,既有时间处理的,也有转换时间格式的: 序号 函数及描述 1 time.altzone 返回格林威治西部的夏令时地区的偏移秒数.如 ...

  8. About Pull Strings 英语走后门议论文

    About pull strings Author : Pleiades_Antares 1. From ancient times to the present, the "going b ...

  9. vi命令下常用命令

    dd:删除游标所在的一整行(常用)ndd:n为数字.删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行d1G:删除光标所在到第一行的所有数据dG:删除光标所在到最后一行的所有数据d$:删 ...

  10. SQLi “百度杯”CTF比赛 九月场

    试一下1=1 发下username为空,说明哪里出问题了,是没有注入吗?还是被过滤了?试一下#号的url编码%23 编码后,返回的结果是对的,证明是的,有注入 1=2就返回空了 看了wp,就觉得自己的 ...