你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

grunt配置文件,实现对js,css文件的合并、压缩

2022/5/10 9:28:40

1、首先在项目中安装grunt以及Grunt所需的插件。

做法:
(1)在项目的package.json文件中(如果没有,可以自己新建一个),写入

{
    "name": "grunt_test",
    "version": "1.0.0",
}

(2) 然后在项目的控制台,输入安装命令,用到什么装什么,比如:

npm install grunt --save-dev(开发模式安装)
npm install grunt -g(全局安装)
npm install grunt-contrib-concat --save-dev
npm install grunt-contrib-cssmin --save-dev
npm install grunt-contrib-jshint --save-dev
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-watch --save-dev

(3)最终package.json文件如下:
在这里插入图片描述

2、编写Gruntfile.js文件(自己创建,开头G要大写)

module.exports = function(grunt) {
    //初始化配置grunt任务
    grunt.initConfig({
        //concat是合并文件的任务
        concat: { //任务名
            options: {
                separator: ';'
            },
            build: {
                src: ["src/js/*.js"],   //合并哪些js文件
                dest: "build/js/built.js"  //输出的js
            }
        },
        //uglify压缩合并生成的文件
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                    '<%= grunt.template.today("yyyy-mm-dd") %> */'
            },
            my_target: {
                files: {
                    'build/js/built.min.js': ['build/js/built.js']
                }
            }
        },
        //jshint检查js的语法
        jshint:{
            options:{
                jshintrc: '.jshintrc' //指定配置文件
            },
            build: ['Gruntfile.js', 'src/js/*.js']  //指定检查的文件
        },
        //cssmin是合并并压缩所有css文件的任务
        cssmin: {
            options: {
                shorthandCompacting: false,
                roundingPrecision: -1
            },
            target: {
                files: {
                    'build/css/build.min.css': ['src/css/*.css']
                }
            }
        },
        //watch实时监控文件的改变并更新页面
        watch: {
            scripts: {
                files: ['src/js/*.js', 'src/css/*.css'],
                tasks: ['concat','jshint','uglify','cssmin'],
                options: {
                    spawn: false,
                },
            },
        },
    });

    // 加载对应的任务插件
    grunt.loadNpmTasks('grunt-contrib-concat');//合并
    grunt.loadNpmTasks('grunt-contrib-uglify');//压缩
    //js语法检查插件
    grunt.loadNpmTasks('grunt-contrib-jshint');//检查js语法格式
    grunt.loadNpmTasks('grunt-contrib-cssmin');//合并压缩css
    grunt.loadNpmTasks('grunt-contrib-watch');//监控

    // 默认被执行的任务列表
    grunt.registerTask('default', ['concat', 'uglify', 'jshint', 'cssmin']);
    grunt.registerTask('build', ['default', 'watch'])
};

3、其中,.jshintrc文件如下:

{
  "curly": true,
  "eqeqeq": true,
  "eqnull": true,
  "expr": true,
  "immed": true,
  "newcap": true,
  "noempty": true,
  "noarg": true,
  "regexp": true,
  "browser": true,
  "devel": true,
  "node": true,
  "boss": false,
  "undef": true,
  "asi": false,
  "predef": ["define","BMap","angular","BMAP_STATUS_SUCCESS"]
}