CMD模块打包部署总结

目前线上系统利用Seajs做模板化,但是没有对js和css进行打包,在这次简历搜索优化项目里我尝试对gulp插件对Seajs模块打包。

安装gulp和相关插件

npm install -g gulp
npm install —-save-dev gulp

cmd打包的插件:gulp-cmd

gulp-cmd可以解析seajs.config中的alias,vars,paths 只有在有seajs.use的时候才有用

npm install --save-dev gulp-cmd

css压缩插件gulp-clean-css ,这个插件代替之前一直使用的gulp-minify-css

npm install --save-dev gulp-clean-css

js压缩合并插件

npm install --save-dev gulp-uglify gulp-concat

入口文件配置

gulp-cmd支持seajs的配置文件,入口文件可以这样配置:

seajs.config({
// 基础路径
// base: window.seajsBase,
// 路径配置
paths: {
‘js‘: ‘../js‘,
‘css‘: ‘../css‘,
‘dist‘ : ‘./dist‘
},
// 别名配置
alias: {
‘jquery‘: ‘js/jquery‘,
‘index‘: ‘js/index‘,
‘citys-pc‘:‘js/citys-pc‘,
‘citys‘:‘js/citys‘,
‘industry‘:‘js/industry‘,
‘jobs‘:‘js/jobs‘,
‘bigcity‘:‘js/bigcitys‘,
‘js/selector‘:‘js/selector-v1‘
},
// 文件编码
charset: ‘utf-8‘
})
seajs.use("./js/search-v1")

在解析模块过程中先解析alias,然后在匹配paths

Js处理流程

gulp.task(‘search-js‘, function () {

return gulp.src(‘js/search-main.js‘)
.pipe(cmd({
ignore: [‘jquery‘]
}))
.pipe(uglify()) //压缩
.pipe(gulp.dest(‘build/js‘)); //输出

});

ignore配置忽略jquery组件,把jquery组件和业务组件分离开。

打包后的文件格式如下:

define函数的第一个参数是该模块的模块id

css处理流程

gulp.task(‘search-css‘, function () {

return gulp.src([
‘css/main.css‘,
‘css/selector.css‘,
‘css/search-v1.css‘,
])
.pipe(minifycss({ compatibility: ‘ie7‘ }))//兼容ie7的配置
.pipe(concat(‘search-main.css‘))
.pipe(gulp.dest(‘build/css/‘));

});

注意:如果css有兼容ie7的hack代码,如果去除compatibility配置,压缩过程会剔除这些hack代码。

js的引用链接

如果没有其他模块,使用一下的引用方式,不过版本号的问题还是要手动改Velocity模板,版本号的问题要等一会前端接管模板以后的构建流程来做了

<script src="js/sea.js"></script>
<script src="build/js/jquery.js"></script>
<script src="build/js/search-main.js?v=20160803"></script>

目前的引用方式,因为页脚里seajs.use加载了其他模块,引用方式要改下,还需要引入seajs.config.js文件,比较奇怪的是,即使已经定义的模块,seajs.use也会重复去加载,比如jquery,之前如果定义过,模块id是jquery,下面的seajs.use还是会请求加载一次jquery模块。

<script src="http://st01.chrstatic.com/themes/bchinahr/js/sea.js"></script>
<script src="http://st01.chrstatic.com/themes/bchinahr/js/sea-config.js?v=20160803"></script>
<script src="http://st01.chrstatic.com/themes/bchinahr/build/js/search-main.js?v=20160803"></script>
<script>
seajs.use("http://st01.chrstatic.com/themes/bchinahr/js/hf",function(hf) {
hf.hObj.init();
})
</script>

css的压缩合并后大小有40k,js有69k,css和js的请求数减少了50%以上,

时间: 2024-12-24 01:10:29

CMD模块打包部署总结的相关文章

seajs打包部署工具spm的使用总结

相信使用seajs的好处大家都是知道的,接触seajs好像是在半年前,当时还不知道页面阻塞问题,这里不带多余的话了. seajs实现了模块化的开发,一个网站如果分了很多很多模块的话,等开发完成了,发现有很大一堆的js需要加载,即使使用了seajs优化加载了,但是过多的http请求会造成服务器的压力,影响加载等等.这时候我们需要将模块进行压缩和合并.这时候spm工具派上用场了. 1.安装spm spm工具是基于node(nodejs的服务平台)的,因此我们需要先安装 node 和 npm 下载地址

Spring boot(4)-应用打包部署

摘自: http://blog.csdn.net/hguisu/article/details/51072683 1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat).当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat.weblogic等等),当然在此之前你要对程序入口做简单调整. 对server的几个常用的配

Zepto自定义模块打包构建

文章转自 http://www.chengxuyuans.com/web_technology/zeptojs-build.html zepto.js 是个好东西,遵循 jQuery API,但比 jQuery 小巧很多,很多移动web开发者都用它 不过,官网下载的默认构建包仅包含 zepto event ajax form ie 这5个模块(版本为1.1.6) 连触摸事件 touch 模块都没,还有能让 ajax 提供 promise 接口的 callbacks 和 deferred 模块也没

使用IntelliJ IDEA和Maven构建Java web项目并打包部署

爱编程爱分享,原创文章,转载请注明出处,谢谢! http://www.cnblogs.com/fozero/p/6120375.html 一.背景 现在越来越多的人使用IntelliJ IDEA工具进行Java的开发,以前也对IntelliJ IDEA有了解过,但是一直没有去使用. IntelliJ IDEA比Myeclipse好用多了 ,功能也非常的强大,google公司Android Studio就是基于IntelliJ IDEA开发的, 开发效率非常高,各种智能提示等等,具体的大家可以去了

VS2010 C/S模式 打包部署

先说说什么是打包部署和发布,对于c/s模式打包就是把我们的程序打成压缩包,打包将行李入包,发布是将打好的包展开.  这样的好处一是保护版权和安装方面,二是打包会把cs文件编译成为dll文件,第一次运行的速度快,同时保护代码.三是打包发布可以节省控件,基本解决了安全性的问题,使得程序员的原codes不被泄漏. 说说打包和发布的区别,发布是没有安装文件的,要求服务器上必须安装上一个frontpage server extension,发布是把页面文件aspx,资源文件放到网站里,代码编译到程序集中放

cmd合并打包、存在的坑、解决方案及注意事项

我想要的打包目标是:将模块合并,同时实现只需要简单修改的配置就能在发布版和调试版之间切换. 我的CMD模块文件 src/modules/module-1.js src/modules/module-2.js //src/modules/module-all.js src/modules/startup.js 我想要的目标文件是 dist/modules/module-all.js dist/modules/startup.js 首页文件 index.html <script type="t

【转】C# Winform打包部署时添加注册表信息实现开机启动

使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中 添加键值保存软件目录.    注意:默认的可能只有HKEY_CURRENT_USER\Software\[Manufacturer],没关系,我们依次添加以上的项即可.即:HKEY_C

js模块化/js模块加载器/js模块打包器

之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7628(大神的文章写的很详细,建议先看完大神的文章) 一.js模块化 什么是js模块化,我们从历史说起. 1.一开始我们怎么写脚本?就是在html文件中用<script></script>写代码 这种方式的缺点:代码复用靠复制,基本是全局变量. 2.后来我们用js文件写代码,用<

VS2010 C/S模式winForm打包部署.详细!

原文:http://blog.csdn.net/xhf55555/article/details/7702212 先说说什么是打包部署和发布,对于c/s模式打包就是把我们的程序打成压缩包,打包将行李入包,发布是将打好的包展开.  这样的好处一是保护版权和安装方面,二是打包会把cs文件编译成为dll文件,第一次运行的速度快,同时保护代码.三是打包发布可以节省控件,基本解决了安全性的问题,使得程序员的原codes不被泄漏. 说说打包和发布的区别,发布是没有安装文件的,要求服务器上必须安装上一个fro