Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript grunt watch跳过了我的一些任务,为什么?_Javascript_Css_Gruntjs_Watch - Fatal编程技术网

Javascript grunt watch跳过了我的一些任务,为什么?

Javascript grunt watch跳过了我的一些任务,为什么?,javascript,css,gruntjs,watch,Javascript,Css,Gruntjs,Watch,我已经设置了一个grunt文件来自动化我的一些任务。我还将我的手表任务划分为更小的子任务,以便于执行 每个任务过去都运行得很好,但现在看来watch在发生文件更改时缺少了一些文件更改。例如,它将检测我的SCS中的更改并编译它。但它将错过编译css中的后续更改,并跳过autoprefix和ftp部署 我怎样才能纠正这个问题?我是否需要使用去BounceDelay,是我的手表“繁殖”设置错误,还是有其他问题 module.exports = function(grunt) { // Load

我已经设置了一个grunt文件来自动化我的一些任务。我还将我的手表任务划分为更小的子任务,以便于执行

每个任务过去都运行得很好,但现在看来watch在发生文件更改时缺少了一些文件更改。例如,它将检测我的SCS中的更改并编译它。但它将错过编译css中的后续更改,并跳过autoprefix和ftp部署

我怎样才能纠正这个问题?我是否需要使用去BounceDelay,是我的手表“繁殖”设置错误,还是有其他问题

module.exports = function(grunt) {

  // Load all grunt tasks matching the `grunt-*` pattern
  require('load-grunt-tasks')(grunt);

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

    // Template strings for directories
    dirs: {
      // Dev
      dev_js: 'js',
      dev_css: 'css',
      dev_scss: 'scss',
      dev_js_authored: '<%= dirs.dev_js %>/authored',
      dev_js_libs: '<%= dirs.dev_js %>/libs',
      dev_js_build: '<%= dirs.dev_js %>/build',
      dev_css_build: '<%= dirs.dev_css %>/build',
      // Production
      prod_server_root: '/wp-content/themes',
      prod_current_theme: '<%= dirs.prod_server_root %>/themename',
      prod_css: '<%= dirs.prod_current_theme %>/css'
    },

    // Template strings for ftp
    ftp_cred: {
      prod_host: 'ip-here',
      prod_auth: 'auth-here'
    },

    // Concatenate
    concat: {   
      js: {
        src: [
          '<%= dirs.dev_js_libs %>/*.js',
          '<%= dirs.dev_js_authored %>/*.js'
        ],
        dest: '<%= dirs.dev_js_build %>/production.js'
      }
    },

    // Minify
    uglify: {
      js: {
        src: '<%= dirs.dev_js_build %>/production.js',
        dest: '<%= dirs.dev_js_build %>/production.min.js'
      }
    },

    // Sass
    sass: {
      compile: {
        options: {
          style: 'compressed'
        },
        files: {
          'css/build/unprefixed.min.css': 'scss/global.scss'
        }
      }
    },

    // Autoprefixer
    autoprefixer: {
      prefix: {
        single_file: {
         src: '<%= dirs.dev_css_build %>/unprefixed.min.css',
         dest: '<%= dirs.dev_css_build %>/production.min.css'
        }
      }
    },

    // FTP
    'ftp-deploy': {
      css: {
        build: {
          auth: {
            host: '<%= ftp_cred.prod_host %>',
            port: 21,
            authKey: '<%= ftp_cred.prod_auth %>'
          },
          src: '<%= dirs.dev_css %>',
          dest: '<%= dirs.prod_css %>',
          exclusions: ['<%= dirs.dev_css_build %>/unprefixed.min.css']
        }        
      }
    },

    // Watch
    watch: {
      scripts_concat: {
        files: ['<%= dirs.dev_js_authored %>/*.js','<%= dirs.dev_js_libs %>/*.js'],
        tasks: ['concat:js']
      },
      scripts_min: {
        files: ['<%= dirs.dev_js_build %>/production.js'],
        tasks: ['uglify:js']
      },
      scss_compile: {
        files: ['<%= dirs.dev_scss %>/**/*.scss'],
        tasks: ['sass:compile']
      },
      css_prefix: {
        files: ['<%= dirs.dev_css_build %>/unprefixed.min.css'],
        tasks: ['autoprefixer:prefix']
      },
      ftp_css: {
        files: ['<%= dirs.dev_css_build %>/production.min.css'],
        tasks: ['ftp-deploy:css']
      },
      livereload: {
        options: { livereload: true },
        files: ['<%= dirs.dev_css_build %>/production.min.css','<%= dirs.dev_js_build %>/production.min.js']
      }
    }

  });

  // Load required plugins
  require('load-grunt-tasks')(grunt);

  // Define what to do at which command
  grunt.registerTask('default', ['watch']);

};
module.exports=函数(grunt){
//加载与'grunt-*'模式匹配的所有grunt任务
要求('load-grunt-tasks')(grunt);
//所有配置都在这里
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
//目录的模板字符串
目录:{
//发展
dev_js:'js',
dev_css:'css',
开发人员scss:“scss”,
dev_js_authored:“/authored”,
dev_js_libs:“/libs”,
dev_js_build:“/build”,
dev_css_build:“/build”,
//生产
prod_server_root:“/wp content/themes”,
产品当前主题:“/themename”,
产品css:“/css”
},
//ftp的模板字符串
ftp_cred:{
prod_主机:“ip在此”,
prod_auth:“在此处进行身份验证”
},
//连接
concat:{
js:{
src:[
“/*.js”,
“/*.js”
],
dest:“/production.js”
}
},
//缩小
丑陋的:{
js:{
src:'/production.js',
dest:“/production.min.js”
}
},
//无礼
sass:{
汇编:{
选项:{
样式:“压缩”
},
档案:{
“css/build/unfixed.min.css”:“scss/global.scss”
}
}
},
//自动刷新器
自动刷新器:{
前缀:{
单个文件:{
src:“/unfixed.min.css”,
dest:“/production.min.css”
}
}
},
//FTP
“ftp部署”:{
css:{
建造:{
认证:{
主机:“”,
港口:21,
身份验证密钥:“”
},
src:“”,
目标:'',
排除项:['/unfixed.min.css']
}        
}
},
//监视
观察:{
脚本\u concat:{
文件:['/*.js','/*.js'],
任务:['concat:js']
},
脚本(u min):{
文件:['/production.js'],
任务:['uglify:js']
},
scss_编译:{
文件:['/***.scss'],
任务:['sass:compile']
},
css_前缀:{
文件:['/unfixed.min.css'],
任务:['autoprefixer:prefix']
},
ftp_css:{
文件:['/production.min.css'],
任务:['ftp-deploy:css']
},
利弗雷罗德:{
选项:{livereload:true},
文件:['/production.min.css','/production.min.js']
}
}
});
//加载所需的插件
要求('load-grunt-tasks')(grunt);
//定义在哪个命令下执行的操作
registerTask('default',['watch']);
};

如果运行
grunt watch:scss\u compile
ftp\u css
任务将不会运行,因此对production.min.css的更改不会触发ftp部署

因此,您可能希望在计算机的帮助下同时运行两个
watch
任务

然后:

有关更多详细信息,请参阅参考资料:

但是,我会将
watch
任务分为两个块:
js
css
,因为我假设所有与
css
相关的任务都必须在发生更改时运行。我会这样做:

  css: {
    files: ['<%= dirs.dev_scss %>/**/*.scss'],
    tasks: ['sass:compile', 'autoprefixer:prefix', 'ftp-deploy:css', 'watch:livereload']
  },
  livereload: {
    options: { livereload: true },
    files: [
        '<%= dirs.dev_css_build %>/production.min.css',
        '<%= dirs.dev_js_build %>/production.min.js'
    ]
  }
css:{
文件:['/***.scss'],
任务:['sass:compile','autoprefixer:prefix','ftp deploy:css','watch:livereload']
},
利弗雷罗德:{
选项:{livereload:true},
档案:[
“/production.min.css”,
“/production.min.js”
]
}

好的,所以我发现了错误(这是我正在查看并将文件输出到的文件夹中的一个错误)。最后,我将watch部分更改为一个较小的有意义的任务链集合,如下所示:

watch: {
  js_prod: {
    files: ['<%= dirs.dev_js_authored %>/*.js','<%= dirs.dev_js_libs %>/*.js'],
    tasks: ['concat:js','uglify:js','ftp-deploy:js_prod','clean:temp_js']
  },
  js_standalone: {
    files: ['<%= dirs.dev_js_standalone %>/*.js'],
    tasks: ['ftp-deploy:js_standalone']
  },
  css_prod: {
    files: ['<%= dirs.dev_scss %>/**/*.scss'],
    tasks: ['sass:compile','autoprefixer:prefix','ftp-deploy:css_prod']
  },
  css_ie: {
    files: ['<%= dirs.dev_css_ie %>/*.css','!<%= dirs.dev_css_ie %>/*.min.css'],
    tasks: ['cssmin:ie','ftp-deploy:css_ie','clean:temp_css_ie']
  },
  livereload: {
    options: { livereload: true },
    files: [
      '<%= dirs.dev_css %>/**/*.css',
      '<%= dirs.dev_js_build %>/production.min.js',
      '<%= dirs.dev_js_standalone %>/*.js']
  }
}
观察:{
js_产品:{
文件:['/*.js','/*.js'],
任务:['concat:js'、'uglify:js'、'ftp-deploy:js_prod'、'clean:temp_js']
},
js_单机版:{
文件:['/*.js'],
任务:['ftp-deploy:js_standalone']
},
css_产品:{
文件:['/***.scss'],
任务:['sass:compile','autoprefixer:prefix','ftp-deploy:css_prod']
},
css_ie:{
文件:['/*.css','!/*.min.css'],
任务:['cssmin:ie'、'ftp-deploy:css\u-ie'、'clean:temp\u-css\u-ie']
},
利弗雷罗德:{
选项:{livereload:true},
档案:[
“/***/.css”,
“/production.min.js”,
'/*.js']
}
}
这很好,而且我对监视任务没有任何问题,因为我不会同时在他们监视的任何区域工作

  css: {
    files: ['<%= dirs.dev_scss %>/**/*.scss'],
    tasks: ['sass:compile', 'autoprefixer:prefix', 'ftp-deploy:css', 'watch:livereload']
  },
  livereload: {
    options: { livereload: true },
    files: [
        '<%= dirs.dev_css_build %>/production.min.css',
        '<%= dirs.dev_js_build %>/production.min.js'
    ]
  }
watch: {
  js_prod: {
    files: ['<%= dirs.dev_js_authored %>/*.js','<%= dirs.dev_js_libs %>/*.js'],
    tasks: ['concat:js','uglify:js','ftp-deploy:js_prod','clean:temp_js']
  },
  js_standalone: {
    files: ['<%= dirs.dev_js_standalone %>/*.js'],
    tasks: ['ftp-deploy:js_standalone']
  },
  css_prod: {
    files: ['<%= dirs.dev_scss %>/**/*.scss'],
    tasks: ['sass:compile','autoprefixer:prefix','ftp-deploy:css_prod']
  },
  css_ie: {
    files: ['<%= dirs.dev_css_ie %>/*.css','!<%= dirs.dev_css_ie %>/*.min.css'],
    tasks: ['cssmin:ie','ftp-deploy:css_ie','clean:temp_css_ie']
  },
  livereload: {
    options: { livereload: true },
    files: [
      '<%= dirs.dev_css %>/**/*.css',
      '<%= dirs.dev_js_build %>/production.min.js',
      '<%= dirs.dev_js_standalone %>/*.js']
  }
}