如何利用Grunt单独压缩各个JS和CSS文件,并生成对应的Source Map

html-css022

如何利用Grunt单独压缩各个JS和CSS文件,并生成对应的Source Map,第1张

1. Package.Json

{

"name": "xxx",

"version": "0.0.1",

"author": "xxx",

"devDependencies": {

"grunt": "~0.4.4",

"load-grunt-tasks": "~0.4.0",

"grunt-contrib-uglify": "~0.5.1",

"grunt-contrib-cssmin": "~0.10.0"

}

}

2. Gruntfile.Js

module.exports = function (grunt) {

// 构建任务配置

grunt.initConfig({

//读取package.json的内容,形成json数据

pkg: grunt.file.readJSON('package.json'),

// 压缩所有js并生成source map

uglify: {

my_target: {

options: {

sourceMap: true

},

files: [

// 可以直接作用于文件夹下所有文件

{

expand: true,

cwd: 'app/js',

// 排除.min的文件

src: ['*.js', '!*.min.js'],

// 输出和输入在同一目录

dest: 'app/js',

ext: '.min.js'

},

// 也可以指明具体一一对应的文件

{

// core

'core/jsCompare.min.js': 'core/jsCompare.js',

'core/jsHelper.min.js': 'core/jsHelper.js',

'core/jsShare.min.js': 'core/jsShare.js',

// dijia

'app/dijia/dijia.min.js': 'app/dijia/dijia.js',

'app/dijia/location.min.js': 'app/dijia/location.js'

}

]

}

},

// 压缩所有css

cssmin: {

minify: {

expand: true,

cwd: 'resources/css/',

src: ['**/*.css', '**/!*.min.css'],

dest: 'resources/css/',

ext: '.min.css'

}

}

})

// 加载指定插件任务

grunt.loadNpmTasks('grunt-contrib-cssmin')

grunt.loadNpmTasks('grunt-contrib-uglify')

// 默认执行的任务

grunt.registerTask('default', ['uglify', 'cssmin'])

}

安装

1

要想使用grunt,首先必须将grunt-cli安装到全局环境中,打开控制台(注意:windows系统下请使用管理员权限打开),输入:

npm install -g grunt-cli

注意,mac os 系统、部分linux系统中,在这句话的前面加上“sudo ”指令。

2

回车,命令行会出现一个转动的小横线,表示正在联网加载。加载的时间看你网速的快慢,不过这个软件比较小,一般加载时间不会很长,稍一会儿,就加载完了。你会看到以下界面。

3

要验证一下grunt-cli是否安装完成并生效,你只需要继续在命令行中输入

“grunt”命令即可。如果生效,则会出现以下结果:

-- 可能不一样 --

END

创建一个简单的网站

1

首先,我在电脑的D盘下面建了一个“grunt_test”文件夹,里面建了三个空文件夹、两个空文档,名称如下图。(注意 Gruntfile.js 文件的首字母大写!)

devDependencies是什么意思?字面意思解释是“开发依赖项”,即我们现在这个系统,将会依赖于哪些工具来开发

2

先把package.json这个文件写一些东西

{ "name": "my", "version": "1.0.0", "devDependencies": {

}

3

接下来我们会有一系列插件的安装,他们的安装过程和grunt一样。但是他们的执行都是基于grunt的,因此才能把grunt叫做一个“构建工具”。

4

注意,这里安装grunt不再是全局安装了,需要你在控制台进入到网站或系统的具体目录下。这里我们进入 D:\grunt_test 目录下。然后输入以下命令。

5

应该第一时间打开package.json去看看,那里的“devDependencies”有什么变化。我这里的变化如下图,看看你的是不是和我的一样

然后你再看看文档目录中的文件或者文件夹有什么变化?我这里多了一个“node_modules”文件夹,其中有一个“grunt”文件夹,再其中有若干文档。这里就是存储grunt源文件的地方。

6

在控制台运行“grunt”命令。如果你得到一个warning提示,那说明grunt已经起作用了。

END

配置Gruntfile.js

1

Gruntfile.js 这个文件,肯定是为了grunt做某种配置的。按照grunt的规定,我们首先把Gruntfile.js配置成如下格式

END

Grunt插件

Contrib-jshint——javascript语法错误检查;

Contrib-uglify——压缩javascript代码

Contrib-cssmin——压缩css代码

Contrib-watch——实时监控文件变化、调用相应的任务重新执行;

Contrib-clean——清空文件、文件夹;

Contrib-copy——复制文件、文件夹

Contrib-concat——合并多个文件的代码到一个文件中

使用uglify插件(压缩javascript代码)。

安装uglify插件的方式,和安装grunt是一样的。还记得grunt是怎么安装的吗?

我们在现有的“src”文件夹中新建一个“test.js”,并随便写一些代码。显然,我们无法通过双手和键盘写出压缩后的代码。

第一步,在grunt.initConfig方法中配置 uglify 的配置参数

uglify:

{target: {files: [{expand: true,

cwd: 'src',src: ['*.js', '!*.min.js'],ext:

'.min.js'}]}}

)}

grunt.loadNpmTasks('grunt-contrib-uglify')grunt.loadNpmTasks('grunt-contrib-cssmin')grunt.registerTask('default',

['uglify', 'cssmin'])//使用grunt命令执行

以上说的这三步已经OK了,接下来我们去试试。在控制台中运行grunt命令,

控制台将输入如下信息:

现在好像没有 -- without errors --

如果你在专业点的话就会理解,其实你要删除的东西是不能删的,它为后期的维护人员修改的时候能更方便的找到,功能跟个书签差不多,但是你一定要删除呢,对你的文档是完全没有影响的, 现在一个DIV+css后台维护人员都会去注释的,因为注释太重要,当你去后台修改东西,然后没有一点注释,遍布都是英文代码的时候,你一定会体会到有个注释,或者有个提示改多好啊 ,你要删除的注释就能有这个功能,所以最好不要删除!