119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Grunt
							 | 
						|||
| 
								 | 
							
								localeTitle: 地面
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								## 咕噜
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`Grunt`是一个JavaScript任务运行器,可用于自动执行重复性任务。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 为什么要使用Grunt?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Web开发中有许多重复的任务。例如:编译,缩小和复制文件。手动完成这些任务需要花费很多精力和时间。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Grunt可以让您的工作更轻松。您只需要通过[Gruntfile](https://gruntjs.com/sample-gruntfile)配置任务。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 入门
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								1.  安装[npm](https://www.npmjs.org/) 。
							 | 
						|||
| 
								 | 
							
								2.  使用`npm install -g grunt-cli`全局安装Grunt的命令行界面(CLI)。
							 | 
						|||
| 
								 | 
							
								3.  将Grunt和Grunt插件列为`package.json`文件中的devDependencies。
							 | 
						|||
| 
								 | 
							
								4.  用`npm i`安装Grunt和Grunt插件。
							 | 
						|||
| 
								 | 
							
								5.  在`Gruntfile.js`文件中配置任务。
							 | 
						|||
| 
								 | 
							
								6.  用`grunt`跑Grunt。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 例
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								下面是`package.json`和`Gruntfile.js`的示例,用于执行以下任务:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								1.  缩小HTML文件。
							 | 
						|||
| 
								 | 
							
								2.  添加供应商前缀并缩小CSS文件。
							 | 
						|||
| 
								 | 
							
								3.  连接和缩小JavaScript文件。
							 | 
						|||
| 
								 | 
							
								4.  缩小图像。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 的package.json
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```json
							 | 
						|||
| 
								 | 
							
								{ 
							 | 
						|||
| 
								 | 
							
								  "name": "project-name", 
							 | 
						|||
| 
								 | 
							
								  "version": "0.1.0", 
							 | 
						|||
| 
								 | 
							
								  "devDependencies": { 
							 | 
						|||
| 
								 | 
							
								    "grunt": "latest", 
							 | 
						|||
| 
								 | 
							
								    "grunt-contrib-htmlmin": "latest", 
							 | 
						|||
| 
								 | 
							
								    "grunt-postcss": "latest", 
							 | 
						|||
| 
								 | 
							
								    "autoprefixer": "latest", 
							 | 
						|||
| 
								 | 
							
								    "cssnano": "latest", 
							 | 
						|||
| 
								 | 
							
								    "grunt-contrib-uglify": "latest", 
							 | 
						|||
| 
								 | 
							
								    "grunt-contrib-imagemin": "latest", 
							 | 
						|||
| 
								 | 
							
								  } 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Gruntfile.js
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```javascript
							 | 
						|||
| 
								 | 
							
								module.exports = function(grunt) { 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								  grunt.initConfig({ 
							 | 
						|||
| 
								 | 
							
								    htmlmin: { 
							 | 
						|||
| 
								 | 
							
								      options: { 
							 | 
						|||
| 
								 | 
							
								        removeComments: true, 
							 | 
						|||
| 
								 | 
							
								        collapseWhitespace: true 
							 | 
						|||
| 
								 | 
							
								      }, 
							 | 
						|||
| 
								 | 
							
								      html: { 
							 | 
						|||
| 
								 | 
							
								        files: [{ 
							 | 
						|||
| 
								 | 
							
								          expand: true, 
							 | 
						|||
| 
								 | 
							
								          cwd: "src/", 
							 | 
						|||
| 
								 | 
							
								          src: "**/*.html", 
							 | 
						|||
| 
								 | 
							
								          dest: "dest/" 
							 | 
						|||
| 
								 | 
							
								        }] 
							 | 
						|||
| 
								 | 
							
								      } 
							 | 
						|||
| 
								 | 
							
								    }, 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    postcss: { 
							 | 
						|||
| 
								 | 
							
								      options: { 
							 | 
						|||
| 
								 | 
							
								        processors: [ 
							 | 
						|||
| 
								 | 
							
								          require("autoprefixer")(), 
							 | 
						|||
| 
								 | 
							
								          require("cssnano")() 
							 | 
						|||
| 
								 | 
							
								        ] 
							 | 
						|||
| 
								 | 
							
								      }, 
							 | 
						|||
| 
								 | 
							
								      css: { 
							 | 
						|||
| 
								 | 
							
								        src: "dest/css/*.css" 
							 | 
						|||
| 
								 | 
							
								      } 
							 | 
						|||
| 
								 | 
							
								    }, 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								     uglify: { 
							 | 
						|||
| 
								 | 
							
								      js: { 
							 | 
						|||
| 
								 | 
							
								        files: { 
							 | 
						|||
| 
								 | 
							
								          "dest/js/main.js": "src/js/*.js" 
							 | 
						|||
| 
								 | 
							
								        } 
							 | 
						|||
| 
								 | 
							
								      }, 
							 | 
						|||
| 
								 | 
							
								    }, 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    imagemin: { 
							 | 
						|||
| 
								 | 
							
								      img: { 
							 | 
						|||
| 
								 | 
							
								        options: { 
							 | 
						|||
| 
								 | 
							
								          optimizationLevel: 5, 
							 | 
						|||
| 
								 | 
							
								          quality: 75 
							 | 
						|||
| 
								 | 
							
								        }, 
							 | 
						|||
| 
								 | 
							
								        files: [{ 
							 | 
						|||
| 
								 | 
							
								          expand: true, 
							 | 
						|||
| 
								 | 
							
								          cwd: "src/img/", 
							 | 
						|||
| 
								 | 
							
								          src: "**", 
							 | 
						|||
| 
								 | 
							
								          dest: "dest/img/" 
							 | 
						|||
| 
								 | 
							
								        }] 
							 | 
						|||
| 
								 | 
							
								      } 
							 | 
						|||
| 
								 | 
							
								    }, 
							 | 
						|||
| 
								 | 
							
								  }); 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								  grunt.loadNpmTasks("grunt-contrib-htmlmin"); 
							 | 
						|||
| 
								 | 
							
								  grunt.loadNpmTasks("grunt-postcss"); 
							 | 
						|||
| 
								 | 
							
								  grunt.loadNpmTasks("grunt-contrib-uglify"); 
							 | 
						|||
| 
								 | 
							
								  grunt.loadNpmTasks("grunt-contrib-imagemin"); 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								  grunt.registerTask("default", ["htmlmin", "postcss", "uglify, imagemin"]); 
							 | 
						|||
| 
								 | 
							
								 }; 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 更多信息:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Grunt文档: [入门](https://gruntjs.com/getting-started)
							 |