2013-10-15 15 views
6

Tôi có một số mô-đun npm mà tôi muốn sử dụng một cấu hình linting phổ biến cho. Tôi có jintint và đóng cửa linter làm việc trên một dự án duy nhất thông qua Grunt. Tuy nhiên, việc sao chép/dán tệp .jshintignore và tệp .jshintrc cho mỗi dự án sẽ trở nên khó sử dụng, đặc biệt khi một thứ cần thay đổi. Vì vậy, lý tưởng tôi muốn có một nhiệm vụ duy nhất grunt gói gọn cấu hình phổ biến và có thể được nạp quaGrunt: Làm thế nào để soạn hai đa nhiệm như một plugin đa nhiệm khác?

grunt.loadNpmTasks('grunt-mysuperlint'); 

đâu grunt-my-common-lint-tasks thực sự là cấu hình mặc định chỉ cụ thể cho cả jshint và đóng cửa Linter.

Nhưng tôi thấy không có cách nào để soạn hai plugin grunt hiện tại thành một trong những thành phần thực sự duy nhất là kết hợp các tùy chọn cũng như mục tiêu.

Điều này có khả thi không?

Tôi có nghĩa vụ phải làm một cái gì đó như:

grunt.registerMultiTask('mysuperlint', function() { 
    // Manual options merging? 
    var opts = this.options({ 
     jshint: { src: 'scripts/**/*.js', options: { ... } }, 
     closureLinter: { src: 'scripts/**/*.js', options: { ... } } 
    }); 
    grunt.config.set('jshint.dev', opts.jshint); 
    grunt.config.set('closureLinter.dev', opts.closureLinter); 
    grunt.task.run('jshint:dev'); 
    grunt.task.run('closureLinter:dev'); 
}); 

Bất kỳ sự giúp đỡ hoặc con trỏ sẽ được thực sự đánh giá cao.

+2

Về cơ bản, snipet này có vẻ ổn. Vấn đề là gì? –

+2

Nó chỉ cảm thấy rất hacky vào thời điểm đó. – Andrew

+0

tiếc là họ chưa xây dựng được api tốt hơn. Nó đã được thảo luận cho bản phát hành lớn hơn tiếp theo –

Trả lời

0

Trong khi điều này không trực tiếp trả lời câu hỏi của bạn, tôi có thể đề xuất mẹo đơn giản cho vấn đề ban đầu của bạn: Bạn có thể có một tệp .jshintignore toàn cầu và liên kết mềm với mỗi dự án. Đó là loại hack nhưng đó là cách đơn giản hơn

Các vấn đề liên quan