2014-09-25 1 views
3

꿀꺽 꿀꺽 마시는 것부터 시작합니다. 이것은 작동하지만 rev.manifest는 자체적으로 씁니다. '스타일'과 '스크립트'를 모두 가지고 있지 않습니다. 더 좋은 방법이 있어야합니다. 권리? :-)꿀꺽 꿀꺽함 작업을 하나의 꿀꺽 꿀꺽 마술 목록에 결합

gulp.task('script', function() { 
    var scripts = gulp.src('source-js/main.js') 
        .pipe(uglify()) 
        .pipe(rev()) 
        .pipe(gulp.dest()); 

    var manifest = gulp.src('./rev-manifest.json'); 

    return es.merge(scripts, manifest) 
      .pipe(rev.manifest()) 
      .pipe(gulp.dest('.')) 
}); 

gulp.task('style', function() { 
    var styles = gulp.src('source-less/style.less') 
        .pipe(less({compress: true})) 
        .pipe(rev()) 
        .pipe(gulp.dest()); 

    var manifest = gulp.src('./rev-manifest.json'); 

    return es.merge(styles, manifest) 
      .pipe(rev.manifest()) 
      .pipe(gulp.dest('.')) 
}); 

gulp.task('watch', function() { 
    gulp.watch('source-less/**/*.less', ['style']); 
    gulp.watch('source-js/**.js', ['script']); 
}); 

편집 :

gulp.task('script', function() { 

    var scripts = gulp.src('source-js/main.js') 
        .pipe(uglify()) 
        .pipe(rev()) 
        .pipe(gulp.dest('assets/js')); 

    var manifest = gulp.src('./rev-manifest.json'); 

    return es.merge(scripts, manifest) 
      .pipe(rev.manifest()) 
      .pipe(gulp.dest('.')) 
}); 

gulp.task('style', function() { 

    var styles = gulp.src('source-less/style.less') 
        .pipe(less({compress: true})) 
        .pipe(rev()) 
        .pipe(gulp.dest('assets/css')); 

    var manifest = gulp.src('./rev-manifest.json'); 

    return es.merge(styles, manifest) 
      .pipe(rev.manifest()) 
      .pipe(gulp.dest('.')) 
}); 

답변

3

덮어 쓰기하는 것을 방지하기 위해 스트림에 직접 manifest.json을 추가하는 예제가있다하지만이 : ES와 함께 노력하고 여전히 매니페스트를 작성 애인 현재 gulp#396의 버그이며이를 허용하지 않는 vinyl-fs#25과 관련된 버그입니다. 미래의 독자를 위해 고정 때 :

gulp.task('scripts', function() { 
    gulp.src('source-js/main.js') 
    .pipe(uglify()) 
    .pipe(rev()) 
    .pipe(gulp.dest('assets/js')) 
    .pipe(gulp.src('./rev-manifest.json')) 
    .pipe(rev.manifest()) 
    .pipe(gulp.dest('assets')); 
}); 

그러나 지금은

, 당신은 이것에 대한 event-stream를 사용해야합니다. gulp-rev#59이 병합 될 때까지는 작동하지 않습니다.

var es = require('event-stream'); 

gulp.task('scripts', function() { 
    var scripts = gulp.src('source-js/main.js') 
        .pipe(uglify()) 
        .pipe(rev()) 
        .pipe(gulp.dest('assets/js')); 

    var manifest = gulp.src('./rev-manifest.json'); 

    return es.merge(scripts, manifest) 
      .pipe(rev.manifest()) 
      .pipe(gulp.dest('.')) 
}); 

style 작업은 동일한 패턴을 따릅니다. 이 모든 내용은 manifest.json루트 디렉토리에 있다고 가정합니다.

+0

편집하고 당신을 따르도록 코드를 업데이트 한 것입니다 - 그것은 여전히 ​​매니페스트를 concating하지, 그래서 스타일의 변화는 하나를 대체 스크립트처럼 스타일이있는 매니페스트의 줄 – Staple

+0

내가 말한 것처럼 PR이 병합되거나 자신을 [변경] 할 때까지 기다려야합니다 (https://github.com/primedia/gulp-rev/commit/). 2925eb0f896df5d40989c6f6e4a2381fe27acf93) –

+0

thi에 대한 요약 주셔서 감사합니다 그것들은 왜 일들이 작동하지 않는지 함께 모으는 것을 도왔습니다. 현재 gulp-rev 용 문서는 오도 된 내용이므로 vinyl-fs # 25 문제가 해결 될 때까지 제거해야합니다. – Ian

0

내 해결책은 다음과 같습니다.

폴더 구조가

└── src 
    ├── images 
    │   ├── skywalker.jpeg 
    │   └── space.png 
    ├── js 
    │   ├── index.js 
    │   ├── index2.js 
    │   └── page.js 
    ├── styles 
    │   ├── index.css 
    │   ├── index.styl 
    │   ├── module 
    │   │   ├── com.css 
    │   │   └── com.styl 
    │   └── page.css 
    └── view 
     ├── index.html 
     └── page.html 

내 꿀꺽 작업이

/** 
* production 
*/ 

var jsProductionPipe = lazypipe() 
    .pipe(jshit) 
    .pipe(jshit.reporter, 'default') 
    .pipe(uglify, { 
     compress: { 
      dead_code: true, 
      conditionals: true, 
      booleans: true, 
      unused: true, 
      if_return: true, 
      join_vars: true 
     } 
    }), 
    cssProductionPipe = lazypipe() 
     .pipe(stylus).pipe(minifyCss); 

gulp.task("deploy_js_css", ["deploy_image"], function() { 

    var manifest = gulp.src(path.join(__dirname, "dist/rev-manifest.json")); 

    return gulp.src(["src/**/*.styl", "src/**/*.js"]) 
     .pipe(debug({title: '[deploy_js_css]:'})) 
     .pipe(revReplace({manifest: manifest, replaceInExtensions: ['.js', '.css', '.html', '.hbs', '.styl']})) 
     .pipe(gulpif('*.styl', cssProductionPipe())) 
     .pipe(gulpif('*.js', jsProductionPipe())) 
     .pipe(rev()) 
     .pipe(gulp.dest("dist")) 
     .pipe(rev.manifest("dist/rev-manifest.json", { 
      merge: true 
     })) 
     .pipe(revDel({ dest: 'dist', oldManifest: path.join(__dirname, "dist/rev-manifest.json") })) 
     .pipe(gulp.dest("./")); 
}); 

gulp.task("deploy_image", function() { 
    return gulp.src("src/images/*", { 
     base: "src/" 
    }) 
     .pipe(debug({title: '[deploy_image]:'})) 
     .pipe(imagemin({ 
      progressive: true 
     })) 
     .pipe(rev()) 
     .pipe(gulp.dest("dist")) 
     .pipe(rev.manifest("dist/rev-manifest.json", { 
      merge: true 
     })) 
     .pipe(revDel({ dest: 'dist', oldManifest: path.join(__dirname, "dist/rev-manifest.json") })) 
     .pipe(gulp.dest("./")); 
}); 

gulp.task('production', ['deploy_image', 'deploy_js_css']);