2014-01-24 2 views
1

현재 Grunt에는 새로운 소스 코드 모음 (공통 폴더 구조 내)에서 CSS 스프라이트를 구성하는 작업을 설정하는 것이 새롭게 추가되었습니다.잡동사니 작업을 반복하다

이렇게하려면 grrit-spritesmith : https://npmjs.org/package/grunt-spritesmith을 사용하고 있습니다.

현재로서는 특정 폴더를보고 스프라이트와 SCSS 부분을 잘 구성하는 작업이 있습니다.

내 질문 : 각 사이트에 대한 작업을 복제하지 않고 사이트 이름 배열을 반복하여 아래 작업으로 전달할 수 있습니까?

grunt.initConfig({ 

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

    sprite: { 

     normal: { 
      src: 'site1/images/sprite/1x/*.png', 
      destImg: 'site1/images/site1-sprite.png', 
      destCSS: 'styles/scss/site1/sprite/_spritesmith.scss', 
      algorithm: 'binary-tree', 
      padding: 20, 
      cssFormat: 'scss', 
      engine: 'pngsmith', 
      cssOpts: { 
       cssClass: function(item) { 
        return '.' + item.name; 
       }, 
      }, 
     }, 

     retina: { 
      src: 'site1/images/sprite/2x/*.png', 
      destImg: 'site1/images/site1-sprite-2x.png', 
      destCSS: 'styles/scss/site1/sprite/_spritesmith-retina.scss', 
      algorithm: 'binary-tree', 
      padding: 40, 
      cssFormat: 'scss', 
      engine: 'pngsmith', 
      cssOpts: { 
       functions: false, 
      }, 
     }, 

    }, 

}); 

나는 나의 Gruntfile을 부풀은 곧 한 표준 및 망막 스프라이트 두 번 각각의 작업을 복제, 약 15 ~ 20 사이트의 컬렉션이 있습니다. Javascript는 나의 장점이 아니므로 지금까지는 모든 솔루션이 작동하지 않았습니다.

도움을 주시면 감사하겠습니다.

미리 감사드립니다.

답변

0
당신이 grunt.initConfig 기능

뭔가

var _ = require('lodash'), 
    tasks = require('mytasks'), 
    abunchOftasks = require('anotherSetOfTasks'); 


var combined = _.merge(tasks, abunchOftasks) //a deep extend 

grunt.initConfig(combined) 

require('mytasks')require('anotherSetOfTasks')처럼 initConfig에 전달하기 전에 문법 설정 객체를 구축 할 수와 같은 입력으로 객체 리터럴을 취 것을 알 수

//mytasks 
module.exports= { 
    sprite: { 
    normal: { 
     src: 'site1/images/sprite/1x/*.png', 
     destImg: 'site1/images/site1-sprite.png', 
     destCSS: 'styles/scss/site1/sprite/_spritesmith.scss', 
     algorithm: 'binary-tree', 
     padding: 20, 
     cssFormat: 'scss', 
     engine: 'pngsmith', 
     cssOpts: { 
      cssClass: function(item) { 
       return '.' + item.name; 
      }, 
     }, 
    }, 
    } 
}; 

//anotherSetOfTasks 
module.exports = { 
    sprite: { 
    retina: { 
     src: 'site1/images/sprite/2x/*.png', 
     destImg: 'site1/images/site1-sprite-2x.png', 
     destCSS: 'styles/scss/site1/sprite/_spritesmith-retina.scss', 
     algorithm: 'binary-tree', 
     padding: 40, 
     cssFormat: 'scss', 
     engine: 'pngsmith', 
     cssOpts: { 
      functions: false, 
     }, 
    }, 
    } 
}; 
: 같은 정의 작업, 바르 등의 무리와 함께 {}를 반환

EDIT 죄송 합니다만 조금 잘못 이해했을 수도 있지만 기본 원칙은 계속 적용됩니다. 사이트 이름에서 태스크를 생성하는 함수를 작성할 수 있습니다. 제안 된대로 새로운 배열을 만들고 각 객체를 sprite 속성의 단일 객체로 결합하여 이름 배열을 반복합니다. 말이 돼?

관련 문제