Grunt - Contoh File
Di bab ini, mari kita buat file Grunt sederhana menggunakan plugin berikut -
- grunt-contrib-uglify
- grunt-contrib-concat
- grunt-contrib-jshint
- grunt-contrib-watch
Instal semua plugin di atas dan ikuti langkah-langkah yang diberikan di bawah ini untuk membuat Gruntfile.js sederhana -
Step 1- Anda perlu membuat fungsi pembungkus , yang merangkum konfigurasi untuk Grunt Anda.
module.exports = function(grunt) {};
Step 2 - Inisialisasi objek konfigurasi Anda seperti yang ditunjukkan di bawah ini -
grunt.initConfig({});
Step 3- Selanjutnya, baca pengaturan proyek dari file package.json ke dalam properti pkg . Ini memungkinkan kami untuk merujuk ke nilai properti dalam file package.json Anda .
pkg: grunt.file.readJSON('package.json')
Step 4- Selanjutnya, Anda dapat menentukan konfigurasi untuk tugas. Mari kita membuat concat tugas pertama kita untuk menggabungkan semua file yang ada di folder src / dan menyimpan file .js gabungan di bawah folder 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'
}
}
Step 5- Sekarang, mari kita buat tugas lain bernama uglify untuk memperkecil JavaScript kita.
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 %>']
}
}
}
Tugas di atas membuat file dalam folder dist / yang berisi file .js yang diperkecil. Itu<%= concat.dist.dest %>akan menginstruksikan uglify untuk mengecilkan file yang dihasilkan oleh tugas concat.
Step 6- Mari kita konfigurasikan plugin JSHint dengan membuat tugas 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,
}
}
}
Tugas jshint di atas menerima array file dan kemudian sebuah objek opsi. Tugas di atas akan mencari pelanggaran pengkodean di file Gruntfile.js dan src / ** / *. Js .
Step 7- Selanjutnya, kami memiliki tugas menonton yang mencari perubahan di salah satu file yang ditentukan dan menjalankan tugas yang Anda tentukan.
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint']
}
Step 8- Selanjutnya, kita harus memuat plugin Grunt yang semuanya telah diinstal melalui _npm .
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
Step 9- Akhirnya, kita harus menentukan tugas default .
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
The bawaan tugas dapat dijalankan dengan hanya mengetik mendengus perintah pada baris perintah.
Ini Gruntfile.js lengkap Anda -
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']);
};