好的,我已经安装了Grunt来连接并分割所有的JS文件,我也已经设置它来运行我的sass文件。这工作正常,我建立了观看电话来观看所有.js和.scss文件,然后运行设置给每个任务的任务。Grunt.js - 同时运行两个手表任务吗?
我正在玩backbone.js,因此每次更改其中一个文件时都要联系很多库文件,但这并不是一个问题,但当任何sass文件发生更改时,它会运行我的闭包编译器,即使没有更改我的任何js文件。
所以我做了一些研究,并从这里发现了一些问题/答案,它看起来像我可以设置两个监控功能来观看不同的文件夹,然后运行设置任务时,这些文件改变了每个监视的文件夹。简单的权利?如果是这样,我不确定哪里出了问题,但它只会看第一套任务,第二套它不会同时看?
我知道JavaScript是非阻塞的,但手表任务是一项阻塞任务,根据我的理解(如果我错了,请纠正我),当我的第一个手表通话开始时,它会停止运行第二次看电话?
然后我发现了同时,我认为会解决我的问题。但它只是做同样的事情,第一次看到的电话似乎是第二次停止运行,而咕噜声正在观看我的第一组文件夹。
这是当前咕噜文件代码:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concurrent: {
options: {
logConcurrentOutput: true
},
target1: ['watch:ScssFiles'],
target2: ['watch:JSFiles']
}, //End of Concurrent
'closure-compiler': {
frontend: {
closurePath: '/usr/lib',
cwd: 'raw_assets/javascript/',
js: ['jquery-2.1.0.js','underscore.js','backbone.js','vars.js','bb_models.js','bb_collections.js','bb_views.js','master.js'],
jsOutputFile: 'assets/js/showcase_master.js',
options: {
compilation_level: 'SIMPLE_OPTIMIZATIONS',
language_in: 'ECMASCRIPT5_STRICT',
}//End of Options
} //End of frontend
}, //End of Closure Compiler
sass: {
dist: {
options: {
style: 'compressed'
}, //End of Options
files: {
'assets/css/Master.css': 'raw_assets/sass/main.scss'
} //End of Files
} //End of Dist.
}, //End of SASS
watch: {
'JSFiles': {
files: [ 'raw_assets/javascript/*.js' ],
tasks: ['closure-compiler'],
options: {
spawn: false,
},
}, //End of Watch call for JS Files
'ScssFiles': {
files: ['raw_assets/sass/*.scss'],
tasks: ['sass'],
options: {
spawn: false,
},
} //End of Watch SCSS Files
} //End of Watch
});
// Load the plugins
grunt.loadNpmTasks('grunt-closure-compiler');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-concurrent');
//When 'Grunt' is run perform watch function
grunt.registerTask('default', ['concurrent:target2', 'concurrent:target1']);#
}; //End of GruntFile
所以我真正想要的,这是咕噜文件在同一时间观看这两个文件夹,只瓶坯的动作/任务,我需要的是,当文件组改变了,这是可行的吗?
我有(或在免得以为我是)有周围的工作,我在Windows上开发,但在运行Ubuntu的服务器的虚拟机。我在腻子终端内运行我的咕噜声文件。在这种情况下,我可以有两个腻子终端,一个用于观看js文件,另一个用于观看我的scss文件。这种设置会是更简单的方法吗?
所有帮助最受欢迎。
Glenn。
PS。对不起,如果我的拼写关闭,我是阅读障碍,也可能没有解释正确的东西,所以让我知道,我会改善我的措辞,谢谢。
非常感谢,这似乎为我工作:) - 我没有使用过多的Grunt。我一直认为你必须在你想要执行的动作上调用registerTask。在这里你只注册我想运行的两个任务。那么,因为我正在使用JQuery/JavaScript(现在学习Backbone),所以使用类似JSHint或JsLint的东西不会是一个问题?我是否将其注册为新任务?在运行我的关闭之前或之后运行?另外你会推荐什么?当他们看着我非常接近彼此? –
没问题。一般来说,您可以定义一个新任务或使用一个插件。如果你调用'grunt.loadNpmTasks('grunt-contrib-jshint');'你会加载'jshint'任务。要使用它,在'initConfig'中添加'jshint'部分来配置任务,并将'jshint'添加到JS'tasks'数组中。我对jshint vs jslint不太熟悉,建议使用哪个,我个人经常碰到jshint。 –
非常感谢 - 我还看到JShint比jslint多得多。 - 谢谢格伦。 –