使用Grunt进行前端模块自动压缩构建

目前正在参与开发的一个项目是采用AMD规范来组织每个模块的代码和其依赖性,每个模块包括其对应的html模板、css样式表以及Javascript文件。具体的目录结构如下图所示:

在项目发布之前,我们往往需要将项目文件比如JavaScript文件、CSS样式表等进行压缩混淆,这么做的目的主要在于减少加载文件的带宽,加快文件加载速度,同时也能在一定程度上保护源代码,提高安全性。Grunt是一个基于NodeJS的自动化构建工具,能够自动完成一些需要反复重复的任务,例如代码压缩混淆、编译、文件拷贝等。

下面本人详细介绍如何利用Grunt来实现将modules目录下的所有模块自动拷贝到dist/modules目录,并且尽可能的压缩每个模块的资源文件。

1.首先安装grunt和所需的grunt插件

要使用grunt,首先需要安装grunt-cli到全局环境中,在命令行窗口中执行如下命令:

npm install -g grunt-cli

然后进入项目根目录,并执行如下命令:

npm install grunt –save-dev

这条命令是安装最新版的grunt到项目根目录,--save-dev表示将其添加到package.json文件的devDependencies内。

然后安装所需的grunt插件,并添加到devDependencies内。

npm install grunt-contrib-uglify –save-dev
npm install grunt-contrib-cssmin –save-dev
npm install grunt-contrib-copy –save-dev

2.创建Gruntfile并且配置任务

 1 module.exports = function(grunt){
 2     "use strict";
 3
 4     grunt.initConfig({
 5         pkg: grunt.file.readJSON("package.json"),
 6         copy: {
 7             module_target: {
 8                 files: [{
 9                     expand: true,
10                     cwd: "WebContent/modules",
11                     src: "**/*",
12                     dest: "WebContent/dist/modules",
13                     filter: "isFile"
14                 }]
15             }
16         },
17         cssmin: {
18             module_target: {
19                 files: [{
20                     expand: true,
21                     cwd: "WebContent/modules",
22                     src: "**/*.css",
23                     dest: "WebContent/dist/modules/",
24                     ext: ".css"
25                 }]
26             }
27         },
28         uglify: {
29             options: {
30                 banner: "/*! <%= pkg.name %> <%= grunt.template.today(‘yyyy-mm-dd‘) %> */\n",
31                 mangle: true,
32                 compress: {
33                     drop_console: true
34                 }
35             },
36             module_target: {
37                 files: [{
38                     expand: true,
39                     cwd: "WebContent/modules",
40                     src: "**/*.js",
41                     dest: "WebContent/dist/modules",
42                     ext: ".js"
43                 }]
44             }
45         }
46     });
47
48     grunt.loadNpmTasks("grunt-contrib-uglify");
49     grunt.loadNpmTasks("grunt-contrib-cssmin");
50     grunt.loadNpmTasks("grunt-contrib-copy");
51
52     grunt.registerTask("default",["copy:module_target", "uglify:module_target", "cssmin:module_target"]);
53 }; 

在grunt中,可以使用通配符来匹配文件路径和文件名,*匹配任意数量的字符,但不包括目录分隔符/,**匹配任意数量的字符,而且包括目录分隔符/。所以modules/**/*.js能够匹配modules目录以及其子目录中所有以.js结尾的文件。

我们将其设置为grunt的默认任务,这样在根目录使用grunt命令就能够运行该任务了。

3.利用bat批处理文件自动执行grunt任务

另外我们还可以编写一个bat文件来执行grunt任务。本人项目位于D盘jee workspace目录下,那么bat文件具体如下:

1 @echo off
2 echo minify javascript and css with grunt
3
4 D:
5 cd D:\\jee workspace\\myproject
6 grunt
7
8 echo Press any key to continue....
9 pause

保存后,双击运行该bat就能够自动压缩构建模块了。

时间: 2024-08-30 12:02:12

使用Grunt进行前端模块自动压缩构建的相关文章

【转载】【grunt整合版】30分钟学会使用grunt打包前端代码

[grunt整合版]30分钟学会使用grunt打包前端代码 grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学,有误请包涵 准备阶段 1.nodeJs环境 因为grunt是基于nodeJs的,所以首先各位需要安装nodeJS环境,这块我们便不管了http://www.cnblogs.com/yexiaochai/p/3527418.html 2.安装

Google Pagespeed,自动压缩优化JS/CSS/Image

Google Pagespeed,自动压缩优化JS/CSS/Image 浏览:257 发布日期:2015/07/05 分类:技术分享 关键字: Nginx Appache Pagespeed 自动压缩优化JS/CSS/Image 这个周末,把服务器的Nginx升级了下,并加入了Google Pagespeed模块 效果很明显: 页面加载的多个JS.CSS会自动合并压缩处理 发现新版本的Pagespeed能很好的发现处理用户加载的第三方JS库,如jQuery 发现新版本的lazyload_imag

译:Grunt编译sass&amp;compass和压缩js的工作流程

原文:Grunt workflow for compiling Sass & Compass and minifying Javascript 以前,我们安装Node,NPM和Grunt还包括建立的一个package.json文件和一个Gruntfile文件.在这篇让人兴奋的文章中,我们将会填补一切,你会领会到Grunt是多么的让人吃惊,体验一下他让人敬畏的力量,就像慵懒的沐浴在温暖的阳光下一样让人满意. 如果你还没有安装Node,NPM和Grunt 那就需要先安装好这些东西(真的不难也不可怕)

大前端的自动化工厂(2)—— SB Family

大前端的自动化工厂(2)-- SB Family 原文链接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f 我坦白我是标题党,SB只是SCSS-Bourbon的简写. 一. SASS/SCSS SASS,也称为SCSS,是CSS预编译语言的一种,常见的预编译语言还包括LESS,Stylus,除了语法风格之外它们之间没有什么太大的区别,从一种语言迁移到另一种语言只需要花半天通读一下文档就可以了.预编译语言为CSS

前端模块管理器简介

模块化结构已经成为网站开发的主流. 制作网站的主要工作,不再是自己编写各种功能,而是如何将各种不同的模块组合在一起. 浏览器本身并不提供模块管理的机制,为了调用各个模块,有时不得不在网页中,加入一大堆script标签.这样就使得网页体积臃肿,难以维护,还产生大量的HTTP请求,拖慢显示速度,影响用户体验. 为了解决这个问题,前端的模块管理器(package management)应运而生.它可以轻松管理各种JavaScript脚本的依赖关系,自动加载各个模块,使得网页结构清晰合理.不夸张地说,将

静态资源文件自动压缩并替换成压缩版本(大型网站优化技术)

原文:静态资源文件自动压缩并替换成压缩版本(大型网站优化技术) 这一次,我总结和分享一项大型网站优化技术,那就是在项目中自动压缩静态资源文件(css.js),并让网站自动加载压缩后的资源文件.当然,这项技术在雅虎35条前端优化建议里也有记载,但它那只是给出一个理论的方案而已,并且采用的是外部压缩工具去压缩,而在我的项目中,是直接通过自己的程序自动化去压缩所有css.js文件,然后让页面直接加载所压缩后的资源,接下来直接进入主题. 本次实验使用的是PHP脚本语言,版本是PHP5.6,是在LINUX

前端js图片压缩

今天被问到前端怎么图片压缩,然后就一顿的查资源,终于知道前端怎么压缩图片. 关键: FileReader() toDataURL() 上面两个是关键方法,是html5后出现的好东西. 就是把图片转换成Base64编码,那样就可以不用理图片在哪了, 他就被你转换成编码了. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

自动压缩备份数据库文件至指定服务器

公司用的数据库服务器每天都要备份,之前都是手动压缩,再拷贝一份至另一台存储. 闲来无事就决定用个脚本可以自动备份和复制 网上有很多资料,百度一下就有了 环境介绍 数据库备份文件存放在D:\beife\下 有一台同网段的服务器作为存放压缩文件备份 2. 压缩文档 先安装Winrar软件,并确定路径,稍后需要在系统环境变量里配置 我先将存储服务器的某个网络共享文件夹映射为网盘L,然后新建txt文件,输入使用以下命令 rar a -df -agYYYY-MM-DD  L:\  D:\oracle\bf

bat脚本:自动压缩n天前的文件【转载】

原文如下: bat脚本:自动压缩n天前的文件-中原小伙-ChinaUnix博客http://blog.chinaunix.net/uid-24946452-id-1651762.html 磁盘空间有限,又不能删除,只能定期对旧文件进行压缩以尽量节省空间.在windows2003上做这件事情比较简单,在之前的平台上就麻烦些.主要是查找n天前的文件的实现有区别.在2003及以后的windows系统版本,都有一个forfiles的命令来查找文件,之前的只能通过bat命令来实现这个功能了.这两种方法的详