【发布时间】:2014-03-31 23:45:44
【问题描述】:
我已经设置了一个 grunt 文件来自动化我的一些任务。我还将监视任务拆分为更小的子任务,prevent it becoming one monolithic watch task。
每个单独的任务过去都运行得非常好,但现在看起来 watch 在发生一些文件更改时丢失了它们。例如,它会检测我的 scss 中的更改并对其进行编译。但它会错过编译后的css中的后续更改,并跳过autoprefix和ftp-deploy。
我该如何纠正这个问题?我是否需要使用 debouncedelay,是我的手表生成设置错误,还是有其他问题?
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']);
};
【问题讨论】:
标签: javascript css gruntjs watch