2015-01-28 9 views
0

컴퍼스와 그루터 사용 방법에 대한 질문입니다. 데이터 채우기 단계에서 문제가 발생했습니다. 나는 콘솔에서 .scss 파일 만 수정할 때 나침반이 동일한 파일을 여러 번 (4, 5 또는 10까지) 채 웁니다. 귀하의 의견으로는 무엇이 그것에 달려 있습니까? 여기 내 gruntfile.js입니다. 친절한 도움에 감사드립니다.그란트가있는 컴퍼스 플러그인

module.exports = function (grunt) { 

var _homeJs = ['contents/js/jquery.Cinema.js', 'contents/js/jquery.SkinOverlay.js']; 
var _homeJsExclude = [] 

_homeJs.forEach(function (entry) { 
    _homeJsExclude.push('!' + entry) 
}); 


grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 

    concat: { 
     dist: { 
      src: ['contents/js/*.js', _homeJsExclude], 
      dest: 'contents/dist/js/global.js' 
     }, 
     lib: { 
      src: 'contents/plugins/**/*.js', 
      dest: 'contents/dist/js/libs.js' 
     }, 
     globalhome: { 
      files: { 
       'contents/dist/js/global.home.js': _homeJs 
      } 
     } 
    }, 
    uglify: { 
     dist: { 
      src: ['<%= concat.dist.dest %>'], 
      dest: 'contents/dist/js/global.min.js' 
     }, 
     globalhome_min: { 
      src: 'contents/dist/js/global.home.js', 
      dest: 'contents/dist/js/global.home.min.js' 
     }, 
     lib: { 
      src: ['<%= concat.lib.dest %>'], 
      dest: 'contents/dist/js/libs.min.js' 
     } 
    }, 
    compass: { 
     dist: { 
      options: { 
       sassDir: 'contents/sass/', 
       cssDir: 'contents/dist/css', 
       watch: true, 
       outputStyle: 'compressed', 
       linecomments: false 
      } 
     } 
    }, 
    cssmin: { 
     target: { 
      files: [ 
       { 
        './contents/dist/css/ie-css/ie8/ie8.min.css': ['./contents/css/ie-css/ie8/ie8.css'] 
       }, 
       { 
        './contents/dist/css/main.min.css': ['./contents/dist/css/main.css'] 
       }, 
       { 
        './contents/dist/css/responsive.min.css': ['./contents/dist/css/responsive.css'] 
       } 
      ] 
     } 
    }, 
    concurrent: { 
     target: { 
      tasks: ['compass', 'watch'], 
      options: { 
       logConcurrentOutput: true 
      } 
     } 
    }, 
    watch: { 
     js: { 
      files: ['contents/js/*.js', 'contents/plugins/**/*.js'], 
      tasks: ['concat', 'uglify:dist', 'uglify:globalhome_min'], 
      options: { 
       reload: true 
      } 
     }, 
     css: { 
      files: ['contents/sass/**/*.scss', 'contents/dist/css/'], 
      tasks: ['concurrent:target'], 
      options: { 
       reload: true 
      } 
     } 
    }, 
}); 

grunt.loadNpmTasks('grunt-contrib-uglify'); 
grunt.loadNpmTasks('grunt-contrib-watch'); 
grunt.loadNpmTasks('grunt-contrib-concat'); 
grunt.loadNpmTasks('grunt-contrib-compass'); 
grunt.loadNpmTasks('grunt-concurrent'); 
grunt.loadNpmTasks('grunt-contrib-cssmin'); 

grunt.registerTask('default', ['concat', 'uglify', 'cssmin']); 

}};

답변

0

여기에 몇 가지 문제가 있습니다 ... 먼저 작업에서 watch sass 파일을 보내고 있습니다. 명시적인 watch 작업으로 모니터 할 필요가 없습니다. 또한 concurrent 작업이 변경되면 watch 작업이 다시 실행되도록 설정됩니다.

  1. 시작 watch는, 그것은 말대꾸 파일 변경, watchconcurrent을 실행하면되는,
  2. 을 변경 말대꾸 또는 컴파일 된 CSS 파일을 기다립니다 :

    이 논리는 당신이 지금 설정 한 흐름이다 turn compass을 실행 한 다음 의 또 다른 인스턴스 watch을 실행합니다.

  3. compass 작업은 concurrent 작업 다시을 변경 사항을 감지하고 실행하는 watch 작업이 발생하여 CSS를 컴파일합니다.
  4. 이것은 계속되고 모든 것을 파괴합니다. 당신이 원하는 경우

    ~/my-project$ grunt watch 
    

    또는 :

그래서, 당신은 지금 무엇을, 그냥 (간체) 설정 사용 대신에 :

grunt.initConfig({ 
    // ... 

    compass: { 
     dist: { 
      options: { 
       sassDir: 'contents/sass/', 
       cssDir: 'contents/dist/css', 

       // *** remove this option 
       // watch: true, 

       outputStyle: 'compressed', 
       linecomments: false 
      } 
     } 
    }, 
    // ... 

    // *** remove this whole task, in the current config you do not need it 
    /* 
    concurrent: { 
     target: { 
      tasks: ['compass', 'watch'], 
      options: { 
       logConcurrentOutput: true 
      } 
     } 
    }, 
    */ 
    watch: { 
     // ... 

     css: { 
      // *** only watch the source files, not the output 
      files: ['contents/sass/**/*.scss'], 
      // *** run the `compass` task directly 
      tasks: ['compass'], 
      options: { 
       reload: true 
      } 
     } 
    } 
}); 

을 당신과 함께 모든 일 킥오프 나침반을 먼저 실행 한 다음 변경 사항을 확인하십시오.

~/my-project$ grunt compass watch 
+0

고맙습니다. 지금은 고맙습니다. 완벽하게. – Mic

+0

나는 약간의 일을 알아 차렸다. css는 약간의 천천히 말을하는 것으로 알려져있다. 왜 그런지 말해 줄 수 있니? 고맙습니다. – Mic

+0

당신이 정확히 무엇을 요구하는지 모르겠습니다 만, 느린 나침반에 관한 것이라면 그렇습니다. 나는 그것에 대한 해결책이 없다. :) – jakerella