前一篇講述了如何使用concat和uglify命令實現JavaScript資源的合並,壓縮。這篇講述下css資源的合並和壓縮。
有如下步驟:
- 新建項目Bejs
- 新建文件package.json
- 新建文件Gruntfile.js
- 命令行執行grunt任務
一、新建項目Bejs
源碼放在src下,該目錄有兩個子目錄asset和js。js下放selector.js和ajax.js,這在上一篇已經講了如何合並壓縮它們。這篇只關注asset目錄,asset目錄下放了一些圖片和css文件。一會會把兩個css資源reset.css和style.css合並,壓縮到dest/asset目錄。一個合並版本all.css,一個壓縮版本all-min.css。

二、新建package.json
package.json放在根目錄下,它的意義上一篇已經介紹過了。 現在的項目結構如下

package.json內容需符合JSON語法規范,如下
{
"name": "BeJS",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-concat": "~0.1.1",
"grunt-css": ">0.0.0"
}
}
grunt-contrib-concat上一篇已經介紹過了,grunt-css 是這篇要使用的插件。
此時,打開命令行工具進入到項目根目錄,敲如下命令: npm install


查看根目錄,發現多了個node_modules目錄,包含了四個子目錄,見圖

三、新建文件Gruntfile.js
Gruntfile.js也是放在項目根目錄下,幾乎所有的任務都定義在該文件中,它就是一個普通的js文件,里面可以寫任意js代碼而不僅局限於JSON。和package.json一樣它也要和源碼一樣被提交到svn或git。

源碼如下
module.exports = function(grunt) {
// 配置
grunt.initConfig({
pkg : grunt.file.readJSON('package.json'),
concat : {
css : {
src: ['src/asset/*.css'],
dest: 'dest/asset/all.css'
}
},
cssmin: {
css: {
src: 'dest/asset/all.css',
dest: 'dest/asset/all-min.css'
}
}
});
// 載入concat和css插件,分別對於合並和壓縮
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-css');
// 默認任務
grunt.registerTask('default', ['concat', 'cssmin']);
};
四、執行grunt任務
打開命令行,進入到項目根目錄,敲 grunt

從打印信息看出成功的合並和壓縮並生成了dest目錄及期望的文件,這時的項目目錄下多了dest,如下

至此,css合並壓縮完畢。
另cssmin也不錯
