2016-11-26 1 views
2

나는 누구의 디렉토리 구조를 다음과 같습니다 웹 응용 프로그램을 가지고있다. 그리고 변경, 처리 또는 복사 할 때. 파일을 불필요하게 복사하거나 처리하지 않기를 바란다. 나는 Gruntfile을 사용하여 이것을 수행하는 방법을 알아 내려고 노력 중이며, 꽤 까다 롭습니다.GruntJS는 어떻게 모든 파일을 보지만 변경된 파일 만 처리합니까?</p> <pre><code>src/ - styles/ - a.css - b.css - c.scss - d.scss - media/ - d.jpg - e.png - f.mpf dest/ - css/ - media/ package.json Gruntfile.js </code></pre> <p>내가 변경 파일을보기 위해 Gruntfile를 사용하려면 :

저는 C++과 메이크 파일의 세계에서 왔습니다. 파생 된 각 파일에 대해 파생 된 명령과 파생 된 파 일이 직접 종속되어있는 파일을 지정했기 때문에 이러한 파일은 훌륭했습니다. 종속 파일이 대상보다 새로운 파일이면 명령이 실행됩니다. 종속성 파일 중 하나라도 없으면 동일한 재귀 적 논리를 기반으로 생성됩니다.

그랑 트에서 어떻게 같은 결과를 얻을 수 있습니까? 시계를 지정하면 여러 파일에서 변경 사항을 볼 수 있습니다. 그러나 사용자가 실행하는 명령은 대개 변경된 파일에만 국한되지 않습니다.

내 Gruntfile은 here입니다. 나는 다음과 같은 3 개 규칙을 구현하기 위해 수정할 수있는 방법을 나에게 보여주십시오

  • 모든 파일 SRC ​​/ 스타일/.scss 변경, 말대꾸로 컴파일 및 이명 령/CSS/ .CSS에 결과를 배치 할 때. src/styles/.css 파일이 변경되면 dest/css/ .css로 복사하십시오. 그런 다음 신지 할 작게하다/CSS/*. min.css
  • 모든 파일 SRC ​​/ 미디어/* 변경,/dest로하는 복사 미디어/*

나는이 규칙은 일반적인되고 싶어요. IE : b.scssd.scss에 대한 별도의 규칙을 작성하고 싶지 않습니다. 모든 단일 파일에 대해 유사한 규칙을 명시 적으로 지정해야한다는 것은 멍청한 것처럼 보입니다.

+0

'watch : {/ * ... * /}'객체 아래의 모든 값은 모두'grunt watch '에서 실행될 설정 객체이며, 주어진 세트가 실행될 때 실행할 태스크 세트를 지정합니다 에프 iles가 변경됩니다. –

+0

예 William. 그러나 어떻게 알 수 있습니까? * 파일 c.scss가 변경되면 c.scss에서만 sass를 실행 한 다음 결과 .css 파일을 dest/css/c.css에 넣습니다. 그런 다음 dest/css/c.min.css *에 minfiy dest/css/c.css 만? –

+0

는'files' 속성에 c.scss를 지정합니다 –

답변

0

당신은 시계하여 여러개의 인스턴스를 실행하는 모듈 grunt-concurrent을 추가해야합니다

concurrent: { 
dev: { 
    tasks: [ 
    'watch:sass:12340', 
    'watch:copy_css:12350', 
    ], 
    options: { 
    logConcurrentOutput: true 
    } 
    } 
} 
grunt.loadNpmTasks('grunt-concurrent'); 

을하고 나는이 방법으로 시계 부분을 편집 것이라고 생각 : 실행

watch: { 
    sass: { 
     files: ['src/css/*.scss'], 
     tasks: ['sass:all','cssmin'], 
     options: { 
      spawn: false 
     } 
    }, 
    copy_css: { 
     files: 'src/css/*.css', 
     tasks: ['copy:all','cssmin'], 
     options: { 
      spawn: false 
     } 
    }, 
    copy_media: { 
    files: 'src/media/**', 
    tasks: ['copy'] 
    } 
} 

보다 grunt concurrent:dev

관련 문제