2016-08-13 9 views
0

私のgulpファイルでは、Bowerコンポーネントを挿入するために、私はこの悪いスタイルコードの重複を持っています。しかし、私はそれを取り除く方法を知りません。* .jsと* .min.jsを処理する方法

一般的に言えば、すべてのファイルをインポートする必要がなく、プロダクション用に.minファイルだけをインポートするため、ちょうどbower_components/**/*.jsと言うことはできません。再び。私が使用するすべてのパッケージに.js.min.jsファイルがあることを保証することはできません。だから*.js*.min.jsは機能しません。

gulp.task('inject',() => { 
let sources = gulp.src([ 
     // jquery 
     'public/bower_components/jquery/dist/jquery.js', 
     // bootstrap 
     'public/bower_components/bootstrap/dist/js/bootstrap.js', 
     'public/bower_components/bootstrap/dist/css/bootstrap.css', 
     // angular 
     'public/bower_components/angular/angular.js', 
     'public/bower_components/angular/angular-csp.css', 
     // angular route 
     'public/bower_components/angular-route/angular-route.js', 
    ],{read: false}); 

let min_sources = gulp.src([ 
     // jquery 
     'public/bower_components/jquery/dist/jquery.min.js', 
     // bootstrap 
     'public/bower_components/bootstrap/dist/js/bootstrap.min.js', 
     'public/bower_components/bootstrap/dist/css/bootstrap.min.css', 
     // angular 
     'public/bower_components/angular/angular.min.js', 
     'public/bower_components/angular/angular-csp.css', 
     // angular route 
     'public/bower_components/angular-route/angular-route.min.js', 
    ],{read: false}); 

return gulp.src('public/build/index.html') 
    .pipe(gulpif(!argv.production, inject(sources, {relative: true}))) 
    .pipe(gulpif(argv.production, inject(min_sources, {relative: true}))) 
    .pipe(gulp.dest('public/build/')); 
}); 

しかし、このコードの複製は解決策ではありません。おもう。この2つの配列をbower.jsファイルに移動するだけでなく、この部分をどのように改善できますか?

+0

vendor.js

'use strict'; module.exports = { 'vendor': { 'scripts': { 'src': [ 'bower_components/jquery/dist/jquery.min.js', 'bower_components/lodash/dist/lodash.min.js', // Moment 'bower_components/moment/min/moment.min.js', 'bower_components/moment/locale/zh-tw.js', // Ionic & Angular 'bower_components/ionic/js/ionic.bundle.min.js', 'bower_components/ngCordova/dist/ng-cordova.min.js' // ... ], 'dest': 'www/js', 'output': 'vendor.bundle.js' }, 'styles': { 'src': [ // Mobiscroll 'bower_external/mobiscroll/css/mobiscroll.custom-2.17.0.min.css', ], 'dest': 'www/css', 'output': 'vendor.bundle.css' } } } } 

第三者コンポーネントの縮小バージョン?あなた自身ですべてをリストするのではなく、[main-bower-files](https://www.npmjs.com/package/main-bower-files)を使うことができます。 – str

+0

デバッグ用です。縮小版を使用すると、一部のコンポーネントをインポートするのを忘れたとしても、何が問題なのかは分かりません。したがって、私は開発中に、コンポーネントの非縮小版を使用する方が好きです。 –

+0

[ソースマップ](http://www.html5rocks.com/jp/tutorials/developertools/sourcemaps/)を参照する必要があります。 – str

答えて

0

おそらくconfig.jsを使用できます。 var config = require('../config');を使用してconfig.jsの変数を読み、ファイルパスとタスクを分けることができます。

あなたは.jsファイルと.min.jsを分離したい場合は、私は.min.js /の.jsファイルをCONCATし、それをuglify、またconcate .cssファイルの下に、あなたは、例えば

'src' : [ 
    'src/**/*.js', 
    '!src/**/*.min.js', 
] 

を使用することができますcssnano()を使用して圧縮します。最後にvendorタスクが出力さvendor.bundle.jsと

config.jsのvendor.bundle.css:

あなたはいつも使用していないのはなぜ
'use strict'; 

var config  = require('../config'); 
var gulp   = require('gulp'); 
var gulpif  = require('gulp-if'); 
var concat  = require('gulp-concat'); 
var uglify  = require('gulp-uglify'); 
var sourcemaps = require('gulp-sourcemaps'); 
var postcss  = require('gulp-postcss'); 
var cssnano  = require('cssnano'); 
var handleErrors = require('../util/handleErrors'); 
var browserSync = require('browser-sync'); 
var pkg   = require('../../package.json'); 

gulp.task('vendorScripts', function() { 
    return gulp.src(config.vendor.scripts.src) 
    .pipe(concat(config.vendor.scripts.output)) 
    .pipe(uglify()) 
    .pipe(gulp.dest(config.vendor.scripts.dest)); 
}); 

gulp.task('vendorStyles', function() { 
    return gulp.src(config.vendor.styles.src) 
    .pipe(concat(config.vendor.styles.output)) 
    .pipe(postcss([ cssnano() ])) 
    .pipe(sourcemaps.write('.')) 
    .pipe(gulp.dest(config.vendor.styles.dest)); 
}); 

gulp.task('vendor', ['vendorScripts', 'vendorStyles']); 
関連する問題