0

我的 grunt 文件中的任务运行没有错误,但我要求它创建的文件没有被编译。如果我简单地运行“grunt”,它们就会被创建,但如果我使用“grunt watch”并保存一个文件,它不会更新。

特别是我正在处理文件'script/src/latestNews.js',所以保存它应该与其他人一起创建'script/dist/main.js',它确实如此。但它并没有像它应该的那样继续创建'dist/build.min.js'。

module.exports = function (grunt) {

    // Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        uglify: {

            options: {
                mangle: false
            },

            target: {
                files: {
                    'script/dist/main.min.js':'script/dist/main.js'
                }
            },

            build: {
                files: {
                    'script/dist/build.min.js':'script/dist/build.min.js'  
                }
            }

        },

        concat: {
            options: {
                stripBanners: true,
                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                '<%= grunt.template.today("yyyy-mm-dd") %> */',
            },

            srcJS: {
                src: ['script/src/menu.js',
                      'script/src/custom_plugins.js',
                      'script/src/banner.js',
                      'script/src/latestNews.js',
                      'script/src/officers.js',
                      'script/src/eventsCalendar.js',
                      'script/src/combinedSocialMedia.js',
                      'script/src/haveYourSay.js',
                      'script/src/photoGallery.js',
                      'script/src/countdown.js'
                     ],
                dest: 'script/dist/main.js'
            },

            css: {
                src: ['style/libs/bootstrap.min.css',
                      'style/libs/bootstrap-theme.min.css',
                      'style/src/css/*'],
                dest: 'style/dist/build.min.css'
            },

            build: {
                src: ['script/libs/jquery.easing.min.js',
                      'script/dist/main.js',
                      'script/libs/bootstrap.min.js',
                      'script/libs/velocity.min.js',
                      'script/libs/date.js',
                      'script/libs/jquery.timeago.js',
                      'script/libs/owl.carousel.min.js'
                      ],
                dest: 'script/dist/build.min.js'
            }

        },

        jshint: {

            main: 'script/dist/main.js'

        },

        watch: {

            js: {
                files: 'script/src/*',
                tasks: ['concat:srcJS', 'uglify:target', 'jshint:main', 'copy:js']
            },

            css: {
                files: 'style/src/css/*',
                tasks: ['copy:css']
            },

            less: {
                files: 'style/src/less/*',
                tasks: ['less', 'copy:css']
            },

            html: {
                files: '*.html',
                tasks: ['validation', 'bootlint']
            }

        },

        clean: {
            js: [
                'script/dist/main.min.js',
                'dist/build.min.js',
                'dist/build.min.css'
            ]
        },

        copy: {
            css: {
                files: [

                    { expand: true, 'src' : 'style/src/css/main.css',
                     'dest' : 'style/dist/', flatten: true,
                     rename: function(dest, src) {
                         return dest + src.replace('main','build.min');
                     }  
                    },

                    { expand: true, 'src' : 'style/dist/build.min.css',
                     'dest' : 'dist/', flatten: true },

                ]
            },

            js: {
                files: [
                    { expand: true, 'src' : 'script/dist/build.min.js',
                    'dest' : 'dist/', flatten: true }  
                ]
            }
        },

        validation: {
            options: {
                reset: grunt.option('reset') || false,
                stoponerror: true,
                relaxerror: ['Bad value X-UA-Compatible for attribute http-equiv on element meta.'] //ignores these errors
            },
            files: {
                src: ['homepage.html']
            }
        },

        bootlint: {
            options: {
                stoponerror: false,
                relaxerror: ['E001', 'E003', 'E031', 'W001', 'W002', 'W003', 'W005', 'W007', 'W009', 'E013']
            },
            files: ['homepage.html'],
        },

        less: {
            build: {
                options: {
                    paths: ["style/src/less"],
                    cleancss: true,
                    compress: true
                },
                files: {
                    "style/src/css/main.css": "style/src/less/main.less"   
                }
            }
        }

    });

    // Load the plugin that provides the "uglify" task.
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-html-validation');
    grunt.loadNpmTasks('grunt-bootlint');

    // Default task(s).
    //grunt.registerTask('default', ['concat:srcJS','concat:css','uglify','jshint:main']);
    grunt.registerTask('default', [
                                 'validation',
                                 'bootlint',
                                 'concat:srcJS',
                                 'jshint:main',
                                 'uglify:target', 
                                 'clean', 
                                 'concat:build',
                                 'uglify:build',
                                 'less',
                                 'copy'
                                ]);
    };
4

1 回答 1

1

看起来您的任务运行的一系列任务watch:js只是缺少几个关键任务。具体来说,您没有运行concat:buildanduglify:build任务。

您当前的任务数组: ['concat:srcJS', 'uglify:target', 'jshint:main', 'copy:js']

完成/固定的任务数组: ['concat:srcJS', 'uglify:target', 'jshint:main', 'concat:build', 'uglify:build', 'copy:js']

用我提供的修复程序替换您当前的阵列应该可以解决您的问题。

于 2016-08-04T20:45:20.373 回答