Grunt - ไฟล์ตัวอย่าง

ในบทนี้ให้เราสร้างไฟล์ Grunt ง่ายๆโดยใช้ปลั๊กอินต่อไปนี้ -

  • grunt-contrib-uglify
  • grunt-contrib-concat
  • grunt-contrib-jshint
  • grunt-contrib-watch

ติดตั้งปลั๊กอินด้านบนทั้งหมดและทำตามขั้นตอนด้านล่างเพื่อสร้างGruntfile.jsอย่างง่าย-

Step 1- คุณต้องสร้างฟังก์ชันWrapperซึ่งจะสรุปการกำหนดค่าสำหรับ Grunt ของคุณ

module.exports = function(grunt) {};

Step 2 - เริ่มต้นวัตถุการกำหนดค่าของคุณตามที่แสดงด้านล่าง -

grunt.initConfig({});

Step 3- จากนั้นอ่านการตั้งค่าโปรเจ็กต์จากไฟล์package.jsonลงในคุณสมบัติpkg ช่วยให้เราอ้างถึงค่าคุณสมบัติภายในไฟล์package.jsonของคุณ

pkg: grunt.file.readJSON('package.json')

Step 4- ถัดไปคุณสามารถกำหนดการกำหนดค่าสำหรับงานได้ ขอให้เราสร้างงานครั้งแรกของเราconcatเพื่อ concatenate ไฟล์ทั้งหมดที่มีอยู่ในsrc /โฟลเดอร์และเก็บตัดแบ่ง.jsไฟล์ภายใต้อ. /โฟลเดอร์

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- ตอนนี้ให้เราสร้างงานอื่นที่เรียกว่า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 %>จะสั่งทำให้น่าเกลียดที่จะลดขนาดของแฟ้มที่งาน concat สร้าง

Step 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ไฟล์

Step 7- ต่อไปเรามีงานเฝ้าดูซึ่งค้นหาการเปลี่ยนแปลงในไฟล์ใด ๆ ที่ระบุและเรียกใช้งานที่คุณระบุ

watch: {
   files: ['<%= jshint.files %>'],
   tasks: ['jshint']
}

Step 8- ต่อไปเราต้องโหลดปลั๊กอินฮึดฮัดซึ่งทั้งหมดได้รับการติดตั้งผ่าน_npm

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

grunt.loadNpmTasks('grunt-contrib-jshint');

grunt.loadNpmTasks('grunt-contrib-watch');

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

Step 9- สุดท้ายเราต้องกำหนดงานเริ่มต้น

grunt.registerTask('default', ['jshint', 'concat', 'uglify']);

เริ่มต้นงานสามารถทำงานได้โดยเพียงแค่พิมพ์แสมคำสั่งในบรรทัดคำสั่ง

นี่คือ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']);

};