1. 程式人生 > >Grunt的配置及使用(壓縮合並js/css)

Grunt的配置及使用(壓縮合並js/css)

exports ner 插件 spec per 其它 data dem init

Grunt的配置及使用(壓縮合並js/css)

安裝

前提是你已經安裝了nodejsnpm

你能夠在 nodejs.org 下載安裝包安裝。也能夠通過包管理器(比方在 Mac 上用 homebrew,同一時候推薦在 Mac 上用 homebrew)。

安裝grunt CLI

npm install -g grunt-cli

依照官方的說法。grunt-cli僅僅是為了在同一臺機器上安裝不同的grunt版本號,那麽咱們先不去管他。

在項目中使用grunt

首先須要往項目裏加入兩個文件:package.jsonGruntfile.js

· package.json:該文件用來為

npm存放項目配置的元數據,與grunt關系最大的配置在devDependencies中。

· [javascript] view plaincopyprint?

1. {

2. "name": "cyjs",

3. "version": "0.1.0",

4. "description": "js for k68.org",

5. "homepage": "http://www.k68.org/",

6. "author": "firebaby",

7. "devDependencies": {

8. "grunt": "~0.4.1",

9. "grunt-contrib-jshint": "~0.3.0",

10. "grunt-contrib-concat": "~0.1.1",

11. "grunt-contrib-uglify": "~0.1.2",

12. "grunt-contrib-cssmin": "~0.5.0",

13. "grunt-htmlhint": "~0.9.2"

14. }

15. }

· {

· "name": "cyjs",

· "version": "0.1.0",

· "description": "js for k68.org",

· "homepage": "http://www.k68.org/",

· "author": "firebaby",

· "devDependencies": {

· "grunt": "~0.4.1",

· "grunt-contrib-jshint": "~0.3.0",

· "grunt-contrib-concat": "~0.1.1",

· "grunt-contrib-uglify": "~0.1.2",

· "grunt-contrib-cssmin": "~0.5.0",

· "grunt-htmlhint": "~0.9.2"

· }

}

· Gruntfile.js:註意G的大寫,這個文件就是grunt的配置了,當中具體定義了每一個任務的細節和運行任務的順序等。

一、安裝grunt

方式一、調用配置文件一起安裝

npm install

方式二、逐步安裝

在命令行進入項目所在文件夾,鍵入例如以下命令就可以,npm會依據devDependencies中的配置,將須要的grunt及其插件下載到你的項目文件夾中。

npm install grunt --save-dev

grunt-contrib-jshintjs語法檢查)、grunt-contrib-concatjs合並)、grunt-contrib-uglify(採用UglifyJS壓縮js)、grunt-contrib-cssminCss壓縮合並)、grunt-htmlhinthtml語法驗查),以上都是經常使用的插件。

很多其它插件,請訪問:http://gruntjs.com/plugins

在項目文件夾下安裝插件也可採用例如以下方式安裝:
安裝:uglify

[txt] view plaincopyprint?

1. npm install grunt-contrib-uglify

npm install grunt-contrib-uglify

安裝:cssmin

[txt] view plaincopyprint?

1. npm install grunt-contrib-cssmin

npm install grunt-contrib-cssmin

插件安裝完畢後,查看根文件夾,會發現node_modules文件夾,包括了對應的插件文件夾。

二、新建Gruntfile.js

Gruntfile.js由下面內容組成
1wrapper函數。結構例如以下,這是Node.js的典型寫法,使用exports公開API

[javascript] view plaincopyprint?

1. module.exports = function(grunt) {

2. // Do grunt-related things in here

3. };

module.exports = function(grunt) {

// Do grunt-related things in here

};


2、項目和任務配置

3、加載grunt插件和任務

4、定制運行任務

例:

[javascript] view plaincopyprint?

1. module.exports = function(grunt) {

2. //配置參數

3. grunt.initConfig({

4. pkg: grunt.file.readJSON(‘package.json‘),

5. concat: {

6. options: {

7. separator: ‘;‘,

8. stripBanners: true

9. },

10. dist: {

11. src: [

12. "js/config.js",

13. "js/smeite.js",

14. "js/index.js"

15. ],

16. dest: "assets/js/default.js"

17. }

18. },

19. uglify: {

20. options: {

21. },

22. dist: {

23. files: {

24. ‘assets/js/default.min.js‘: ‘assets/js/default.js‘

25. }

26. }

27. },

28. cssmin: {

29. options: {

30. keepSpecialComments: 0

31. },

32. compress: {

33. files: {

34. ‘assets/css/default.css‘: [

35. "css/global.css",

36. "css/pops.css",

37. "css/index.css"

38. ]

39. }

40. }

41. }

42. });

43.

44. //加載concatuglify插件。分別對於合並和壓縮

45. grunt.loadNpmTasks(‘grunt-contrib-concat‘);

46. grunt.loadNpmTasks(‘grunt-contrib-uglify‘);

47. grunt.loadNpmTasks(‘grunt-contrib-cssmin‘);

48.

49. //註冊任務

50. grunt.registerTask(‘default‘, [‘concat‘, ‘uglify‘, ‘cssmin‘]);

51. }

module.exports = function(grunt) {

//配置參數

grunt.initConfig({

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

concat: {

options: {

separator: ‘;‘,

stripBanners: true

},

dist: {

src: [

"js/config.js",

"js/smeite.js",

"js/index.js"

],

dest: "assets/js/default.js"

}

},

uglify: {

options: {

},

dist: {

files: {

‘assets/js/default.min.js‘: ‘assets/js/default.js‘

}

}

},

cssmin: {

options: {

keepSpecialComments: 0

},

compress: {

files: {

‘assets/css/default.css‘: [

"css/global.css",

"css/pops.css",

"css/index.css"

]

}

}

}

});

//加載concat和uglify插件,分別對於合並和壓縮

grunt.loadNpmTasks(‘grunt-contrib-concat‘);

grunt.loadNpmTasks(‘grunt-contrib-uglify‘);

grunt.loadNpmTasks(‘grunt-contrib-cssmin‘);

//註冊任務

grunt.registerTask(‘default‘, [‘concat‘, ‘uglify‘, ‘cssmin‘]);

}

grunt api文檔:http://gruntjs.com/api/grunt

三、命令行運行grunt任務

進入到項目根文件夾,敲:

[txt] view plaincopyprint

">?

1. grunt

grunt

就會按Gruntfile配置的文件進行壓縮合並。

也能夠單獨運行,例運行js壓縮命令:

[txt] view plaincopyprint?

1. grunt uglify

grunt uglify

css壓縮命令

[txt] view plaincopyprint

">?

1. grunt cssmin

DEMO下載:點擊打開鏈接

Grunt的配置及使用(壓縮合並js/css)