괜찮아요, 내가 설정 grunt concat 및 분 내 모든 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
, 같은 시간에 두 폴더를보고 만 나는 점에서 때 파일이 필요합니다 작업/작업을 미리 형성이 꿀꿀 파일입니다 그룹이 바뀌 었습니까?
나는 (또는 내가해야 할 일을 생각할 때) 해결해야 할 일이있다. 나는 윈도우즈에서 개발하고 있지만, 우분투 서버를 운영하는 가상 머신을 가지고있다. 나는 퍼티 (putty) 터미널 내부에서 쓰레기 파일을 실행 중입니다. 어떤 경우에는 두 개의 퍼티 (pty) 터미널을 가질 수 있습니다. 하나는 js 파일을 감시하고 다른 하나는 내 scss 파일을 감시합니다. 이 설정은 단지 더 쉬운 방법일까요?
모든 도움을 환영합니다.
글렌.
추신. 미안, 내 철자법이 꺼져 있으면 난독증이 있고, 일을 올바르게 설명하지 못했을 수도 있습니다. 그래서 알려주세요. 나는 말씨를 향상시킬 것입니다. 감사합니다.
많은 감사합니다. 이것은 저에게 효과적입니다. :) - 저는 Grunt를 많이 사용하지 않았습니다. 나는 항상 당신이 수행하길 원하는 작업에 대해 registerTask를 호출해야한다고 생각했습니다. 여기서는 내가 실행하고 싶은 두 가지 작업 만 등록합니다. 그래서 JSHint 나 JsLint와 같은 것을 사용하는 JQuery/JavaScript (그리고 Backbone을 배움)를 사용하고 있는데 문제가되지 않을까요? 새로운 작업으로 등록합니까? 실행 전후에 실행 중지? 게다가 무엇을 권하고 싶습니까? 그들은 나를 매우 가까이에서 바라 보면서? –
문제 없습니다. 일반적으로 새 작업을 정의하거나 플러그인에서 하나를 사용할 수 있습니다. 'grunt.loadNpmTasks ('grunt-contrib-jshint');를 호출하면'jshint' 작업을로드합니다. 그것을 사용하려면,'jshint' 섹션을'initConfig'에 추가하여 태스크를 구성하고 JS'tasks' 배열에'jshint'를 추가하십시오. 나는 jshint 대 jslint에 익숙하지 않아서 사용할 것을 조언하지 않는다. 나는 개인적으로 더 자주 jshint를 실행했다. –
많은 감사합니다 - jshint는 jslint보다 훨씬 더 많이 볼 수 있습니다. 글렌에게 고마워. –