grunt不会观看新的js文件

时间:2018-08-07 09:42:59

标签: gruntjs grunt-contrib-watch

我有咕gr的问题。当我创建一个新的js文件(在这种情况下为角度控制器)时,grunt不会处理它。在我的Gruntfile.js下面

// Generated on 2015-01-21 using generator-angular 0.9.2
/*jslint node: true */
'use strict';
 
// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'
 
module.exports = function(grunt) {
 
    // Load grunt tasks automatically
    require('load-grunt-tasks')(grunt);
 
    // Time how long tasks take. Can help when optimizing build times
    require('time-grunt')(grunt);
 
    grunt.file.defaultEncoding = 'utf8';
 
    // Configurable paths for the application
    var appConfig = {
        app: require('./bower.json').appPath || 'app',
        dist: 'dist'
    };
 
    var target = grunt.option('env') || 'development';
 
    // Define the configuration for all the tasks
    grunt.initConfig({
 
        // Project settings
        yeoman: appConfig,
 
 
        // Watches files for changes and runs tasks based on the changed files
        watch: {
            //bower: {
            //    files: ['bower.json'],
            //    tasks: ['wiredep']
            //},
            js: {
                files: ['<%= yeoman.app %>/scripts/**/*.js'],//['<%= yeoman.app %>/scripts/{,*/}*.js'],
                tasks: ['newer:jshint:all'],
                options: {
                    livereload: true//'<%= connect.options.livereload %>'
                }
            },
            babel: {
                files: ['app/scripts/**/*.es6'],
                tasks: ['babel']
            },
            jsTest: {
                files: ['test/spec/{,*/}*.js'],
                tasks: ['newer:jshint:test', 'karma']
            },
            styles: {
                files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
                tasks: ['newer:copy:styles', 'autoprefixer']
            },
            gruntfile: {
                files: ['Gruntfile.js']
            },
            livereload: {
                options: {
                    livereload: '<%= connect.options.livereload %>'
                },
                files: [
                    '<%= yeoman.app %>/{,*/}*.html',
                    '.tmp/styles/{,*/}*.css',
                    '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
                ]
            }
        },
 
        babel: {
            es6: {
                files: [{
                    expand: true,
                    src: ['app/scripts/**/*.es6'],
                    ext: '.js'
                }]
            }
        }, // The actual grunt server settings
        connect: {
            options: {
                port: 9000,
                // Change this to '0.0.0.0' to access the server from outside.
                hostname: 'localhost',
                livereload: 35729
            },
            livereload: {
                options: {
                    open: true,
                    middleware: function(connect) {
                        return [
                            connect.static('.tmp'),
                            connect().use(
                                '/bower_components',
                                connect.static('./bower_components')
                            ),
                            connect.static(appConfig.app)
                        ];
                    }
                }
            },
            test: {
                options: {
                    port: 9001,
                    middleware: function(connect) {
                        return [
                            connect.static('.tmp'),
                            connect.static('test'),
                            connect().use(
                                '/bower_components',
                                connect.static('./bower_components')
                            ),
                            connect.static(appConfig.app)
                        ];
                    }
                }
            },
            dist: {
                options: {
                    open: true,
                    base: '<%= yeoman.dist %>'
                }
            }
        },
 
        // Make sure code styles are up to par and there are no obvious mistakes
        jshint: {
            options: {
                jshintrc: '.jshintrc',
                reporter: require('jshint-stylish'),
                reporterOutput: ""
            },
            all: {
                src: [
                    'Gruntfile.js',
                    '<%= yeoman.app %>/scripts/**/*.js'
                ]
            },
            test: {
                options: {
                    jshintrc: 'test/.jshintrc'
                },
                src: ['test/spec/{,*/}*.js']
            }
        },
 
        // Empties folders to start fresh
        clean: {
            dist: {
                files: [{
                    dot: true,
                    src: [
                        '.tmp',
                        '<%= yeoman.dist %>/{,*/}*',
                        '!<%= yeoman.dist %>/.git*'
                    ]
                }],
                options: {
                    force: true
                }
            },
            server: '.tmp'
        },
 
        // Add vendor prefixed styles
        autoprefixer: {
            options: {
                browsers: ['last 1 version']
            },
            dist: {
                files: [{
                    expand: true,
                    cwd: '.tmp/styles/',
                    src: '{,*/}*.css',
                    dest: '.tmp/styles/'
                }]
            }
        },
 
        // Renames files for browser caching purposes
        filerev: {
            dist: {
                src: [
                    '<%= yeoman.dist %>/scripts/{,*/}*.js',
                    '<%= yeoman.dist %>/styles/{,*/}*.css',
                    '<%= yeoman.dist %>/views/{,*/}*.html'
                ]
            }
        },
 
        // Reads HTML for usemin blocks to enable smart builds that automatically
        // concat, minify and revision files. Creates configurations in memory so
        // additional tasks can operate on them
        useminPrepare: {
            html: ['<%= yeoman.app %>/{,*/}*.html', '<%= yeoman.app %>/views/{,*/}*.html'],
            options: {
                dest: '<%= yeoman.dist %>',
                flow: {
                    html: {
                        steps: {
                            js: ['concat', 'uglifyjs'],
                            css: ['cssmin']
                        },
                        post: {}
                    }
                }
            }
        },
 
        // Performs rewrites based on filerev and the useminPrepare configuration
        usemin: {
            html: ['<%= yeoman.dist %>/{,*/}*.html', '<%= yeoman.dist %>/views/{,*/}*.html'],
            css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
            js: '<%= yeoman.dist %>/scripts/*.js',
            options: {
                assetsDirs: ['<%= yeoman.dist %>', '<%= yeoman.dist %>/images', '<%= yeoman.dist %>/views/**']
            },
            patterns: {
                js: [
                    [/(views\/.*?\.(html))/gm, 'Update template urls in the js files']
                ]
            }
        },
        concat: {
            addTemplate: {
                src: ['.tmp/concat/scripts/scripts.js', '.tmp/templates.js'],
                dest: '.tmp/concat/scripts/scripts.js'
            }
        },
        ngtemplates: {
            boAdminApp: {
                cwd: '<%= yeoman.dist %>',
                src: ['views/{,*/}*.html', 'scripts/directives/{,*/}*.html'],
                dest: '.tmp/templates.js',
                options: {
                    //  usemin: 'dist/scripts/vendors.js', // <~~ This came from the <!-- build:js --> block
                    htmlmin: {
                        collapseBooleanAttributes: true,
                        collapseWhitespace: true,
                        removeAttributeQuotes: true,
                        removeComments: true, // Only if you don't use comment directives!
                        removeEmptyAttributes: true,
                        removeRedundantAttributes: true,
                        removeScriptTypeAttributes: true,
                        removeStyleLinkTypeAttributes: true
                    },
                    module: 'boAdminApp'
                }
            }
        },
 
        // The following *-min tasks will produce minified files in the dist folder
        // By default, your `index.html`'s <!-- Usemin block --> will take care of
        // minification. These next options are pre-configured if you do not wish
        // to use the Usemin blocks.
        cssmin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.dist %>',
                    src: 'styles/*.css',
                    dest: '<%= yeoman.dist %>'
                }]
            }
        },
        uglify: {
            build: {
                files: [{
                    expand: true,
                    src: '**/*.js',
                    dest: '<%= yeoman.dist %>/scripts',
                    cwd: '<%= yeoman.app %>/scripts'
                }]
            },
            options: {
                mangle: false
            },
        },
        // concat: {
        //   dist: {}
        // },
 
        imagemin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>/images',
                    src: '{,*/}*.{png,jpg,jpeg,gif}',
                    dest: '<%= yeoman.dist %>/images'
                }]
            }
        },
 
        svgmin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>/images',
                    src: '{,*/}*.svg',
                    dest: '<%= yeoman.dist %>/images'
                }]
            }
        },
 
        htmlmin: {
            dist: {
                options: {
                    collapseWhitespace: true,
                    conservativeCollapse: true,
                    collapseBooleanAttributes: true,
                    removeCommentsFromCDATA: true,
                    removeOptionalTags: true
                },
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.dist %>',
                    src: '**/*.html',
                    dest: '<%= yeoman.dist %>'
                }]
            }
        },
 
        // ngAnnotate tries to make the code safe for minification automatically by
        // using the Angular long form for dependency injection. It doesn't work on
        // things like resolve or inject so those have to be done manually.
        ngAnnotate: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>/scripts',
                    src: '**/*.js',
                    dest: '<%= yeoman.dist %>/scripts',
                }]
            }
        },
 
        // Replace Google CDN references
        cdnify: {
            dist: {
                html: ['<%= yeoman.dist %>/*.html']
            }
        },
 
        // Copies remaining files to places other tasks can use
        copy: {
            dist: {
                files: [{
                        expand: true,
                        dot: true,
                        cwd: '<%= yeoman.app %>',
                        dest: '<%= yeoman.dist %>',
                        src: ['**']
                    }, {
 
                        expand: true,
                        cwd: 'bower_components',
                        dest: '<%= yeoman.dist %>/bower_components',
                        src: ['**']
                    },
 
                    {
                        expand: true,
                        cwd: '.tmp/images',
                        dest: '<%= yeoman.dist %>/images',
                        src: ['generated/*']
                    }, {
                        expand: true,
                        cwd: 'bower_components/bootstrap/dist',
                        src: 'fonts/*',
                        dest: '<%= yeoman.dist %>'
                    }, {
                        expand: true,
                        cwd: '.',
                        src: 'favicon.ico',
                        dest: '<%= yeoman.dist %>'
                    }, {
                        expand: true,
                        cwd: 'bower_components/font-awesome',
                        src: 'fonts/*',
                        dest: '<%=  yeoman.dist %>'
                    }
                ]
            },
            styles: {
                expand: true,
                cwd: '<%= yeoman.app %>/styles',
                dest: '.tmp/styles/',
                src: '{,*/}*.css'
            }
        },
 
        // Run some tasks in parallel to speed up the build process
        concurrent: {
            server: [
                'copy:styles'
            ],
            test: [
                'copy:styles'
            ],
            dist: [
                'copy:styles',
                'imagemin',
                'svgmin'
            ]
        },
 
        // Test settings
        karma: {
            unit: {
                configFile: 'test/karma.conf.js',
                singleRun: true
            }
        }
    });
 
 
    grunt.registerTask('serve', 'Compile then start a connect web server', function(target) {
        if (target === 'dist') {
            return grunt.task.run(['build', 'connect:dist:keepalive']);
        }
 
        grunt.task.run([
            'clean:server',
            'concurrent:server',
            'babel:es6',
            'autoprefixer',
            'connect:livereload',
            'watch'
        ]);
    });
 
    grunt.registerTask('server', 'DEPRECATED TASK. Use the "serve" task instead', function(target) {
        grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
        grunt.task.run(['serve:' + target]);
    });
 
    grunt.registerTask('test', [
        'clean:server',
        'concurrent:test',
        'autoprefixer',
        'connect:test',
        'karma'
    ]);
 
    grunt.registerTask('build', [
        'clean:dist',
        'babel:es6',
        'copy:dist',
        'autoprefixer',
        'ngAnnotate',
        'ngtemplates',
        'useminPrepare',
        'concat:generated',
        'concat:addTemplate',
        'uglify',
        'cssmin',
        'filerev',
        'usemin'
 
    ]);
 
    grunt.registerTask('default', [
        'test',
        'build'
    ]);
};

执行构建任务后,我得到了一个名为scripts.xxxxx(xxxx isa code)的新js文件,其中包含所有已链接和缩小的js和html文件,但是新js文件的代码不存在。为什么?

0 个答案:

没有答案
相关问题