Grunt不看JS文件

Grunt Does Not Watch JS files

本文关键字:文件 JS 不看 Grunt      更新时间:2023-09-26

我花了一个多小时研究这个问题,研究了几个问题,但找不到答案。

我在javascript文件上使用watch时遇到了一个问题。监视所有其他文件,并正确执行任务。

如果我从一开始就运行默认值,concat和uglify运行得很好,但如果我对js文件进行任何更改,watch就会直接忽略它

这是我的文件:

module.exports = function(grunt) {
    // Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            index: {
                src: ['js/shared/*.js', 'js/index/*.js'],
                dest: 'js/concat/index.js',
            },
            page: {
                src: ['js/shared/*.js', 'js/page/*.js'],
                dest: 'js/concat/page.js',
            },
        },
        uglify: {
            dist: {
                files:{
                    'js/build/index.min.js': 'js/concat/index.js',
                    'js/build/page.min.js': 'js/concat/page.js',
                }
            }
        },
        sass: {
            options: {
                outputStyle: 'compressed',
            },
            dist: {
                files: {
                    'css/main-unprefixed.css': 'sass/main.scss'
                }
            }
        },
        autoprefixer: {
            global: {
                src: 'css/main-unprefixed.css',
                dest: 'css/main.css'
            }
        },
        jade: {
            compile: {
                options: {
                    pretty: true
                },
                files: [{
                    expand: true,
                    cwd: '',
                    src: [ '_layouts/jade/*.jade' ],
                    dest: '_layouts',
                    flatten: true,
                    ext: '.html'
                }]
            }
        },
        shell: {
            jekyllServe: {
                command: "jekyll serve --no-watch"
            },
            jekyllBuild: {
                command: "jekyll build"
            }
        },
        open : {
            build: {
                path: 'http://localhost:4000',
                app: 'Firefox'
            }
        },
        watch: {
            options: {
                livereload: true
            },
            site: {
                files: ["*.html", "**/*.html", "*.md", "**/*.md", "**/*.yml", "*.yml", "!_site/*.*", "!_site/**/*.*"],
                tasks: ["shell:jekyllBuild"]
            },
            scripts: {
                files: ["js/*.js", "js/**/*.js"],
                tasks: ["concat", "uglify", "shell:jekyllBuild"]
            },
            jade: {
                files: ["_layouts/jade/*.jade"],
                tasks: ["jade"]
            },
            css: {
                files: ["sass/*.scss", "sass/**/*.scss", "sass/**/**/*.scss"],
                tasks: ["sass", "autoprefixer", "shell:jekyllBuild"]
            }
        }
    });

    require('load-grunt-tasks')(grunt);
    // Default task(s).
    grunt.registerTask("serve", ["shell:jekyllServe"]);
    grunt.registerTask("default", ["open", "concat", "uglify", "sass", "autoprefixer", "jade", "shell:jekyllBuild", "watch"]);
};

非常感谢您的帮助。

问题存在于site方法中的watch任务中。

如果你删除这些,它应该工作:

"!_site/*.*", "!_site/**/*.*"

Grunt似乎不喜欢!中的下划线。

我不知道如何在保留下划线的同时解决此问题,但您可以始终将目录重命名为sitedist,而不是_site