好的,我已經安裝了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多得多。 - 謝謝格倫。 –