- Grunt 教程
- Grunt - 首页
- Grunt - 概述
- Grunt - 特性
- Grunt - 安装
- Grunt - 入门
- Grunt - 配置任务
- Grunt - 示例文件
- Grunt - 创建任务
- Grunt 有用资源
- Grunt - 快速指南
- Grunt - 有用资源
- Grunt - 讨论
Grunt - 示例文件
在本节中,让我们使用以下插件创建一个简单的 Grunt 文件:
- grunt-contrib-uglify
- grunt-contrib-concat
- grunt-contrib-jshint
- grunt-contrib-watch
安装所有上述插件并按照以下步骤创建一个简单的 Gruntfile.js 文件:
步骤 1 - 您需要创建一个 包装器 函数,该函数封装 Grunt 的配置。
module.exports = function(grunt) {};
步骤 2 - 初始化您的配置对象,如下所示:
grunt.initConfig({});
步骤 3 - 接下来,将项目设置从 package.json 文件读取到 pkg 属性中。这使我们能够在您的 package.json 文件中引用属性值。
pkg: grunt.file.readJSON('package.json')
步骤 4 - 接下来,您可以为任务定义配置。让我们创建我们的第一个任务 concat,将 src/ 文件夹中存在的所有文件连接起来,并将连接后的 .js 文件存储在 dist/ 文件夹下。
concat: { options: { // define a string to insert between files in the concatenated output separator: ';' }, dist: { // files needs to be concatenated src: ['src/**/*.js'], // location of the concatenated output JS file dest: 'dist/<%= pkg.name %>.js' } }
步骤 5 - 现在,让我们创建另一个名为 uglify 的任务来压缩我们的 JavaScript。
uglify: { options: { // banner will be inserted at the top of the output which displays the date and time banner: '/*! <%= pkg.name %> <%= grunt.template.today() %> */\n' }, dist: { files: { 'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] } } }
上述任务在 dist/ 文件夹中创建一个包含压缩 .js 文件的文件。<%= concat.dist.dest %> 将指示 uglify 压缩 concat 任务生成的的文件。
步骤 6 - 让我们通过创建 jshint 任务来配置 JSHint 插件。
jshint: { // define the files to lint files: ['Gruntfile.js', 'src/**/*.js'], // configure JSHint options: { // more options here if you want to override JSHint defaults globals: { jQuery: true, } } }
上述 jshint 任务接受一个文件数组,然后是一个选项对象。上述任务将查找 Gruntfile.js 和 src/**/*.js 文件中的任何编码违规。
步骤 7 - 接下来,我们有 watch 任务,它查找任何指定文件的更改并运行您指定的任务。
watch: { files: ['<%= jshint.files %>'], tasks: ['jshint'] }
步骤 8 - 接下来,我们必须加载通过 _npm 安装的所有 Grunt 插件。
grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-concat');
步骤 9 - 最后,我们必须定义 default 任务。
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
可以通过在命令行上键入 grunt 命令来运行 default 任务。
以下是您的完整 Gruntfile.js 文件:
module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { options: { separator: ';' }, dist: { src: ['src/**/*.js'], dest: 'dist/<%= pkg.name %>.js' } }, uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today() %> */\n' }, dist: { files: { 'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] } } }, jshint: { // define the files to lint files: ['Gruntfile.js', 'src/**/*.js'], // configure JSHint options: { // more options here if you want to override JSHint defaults globals: { jQuery: true, } } }, watch: { files: ['<%= jshint.files %>'], tasks: ['jshint'] } }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.registerTask('default', ['jshint', 'concat', 'uglify']); };
广告