###前提
gulp での、ファイルコピー、削除に関してのご質問です。
よろしければご回答をお願い致します。
開発環境は以下になります。
###開発環境
project ├── .csscomb.json ├── gulpfile.js ├── package.json ├── node_modules ├── src │ ├── assets │ ├── images │ ├── js │ ├── scss │ │ └── dist ├── js ├── css ├── images ├── .html
src = 開発ディレクトリ(作業用ファイル群)
dist = 出力先(納品用ファイル群)
・以下のように出力します。
src/images → dist/images(圧縮)
src/js → dist/js(圧縮)
src/scss → dist/css(ビルド・圧縮)
src/assets → dist(コピー)
###やりたい事
・ファイル構成を維持したまま assets → dist へのファイルコピー(問題なく動作)
・assets 内のファイルを削除した場合に dist 内のファイルも削除するように delプラグインでコピー前にファイルを削除させたい。(問題なく動作)
・その際、dist 直下の js、css、images ディレクトリとその中のファイルは削除しない。(問題点)
以下gulpfile.js の抜粋
js
1※reloadT は、オートリロードタスク 2 3////////////////////// 4// ファイル削除 5////////////////////// 6gulp.task('tplcleanT', function() { 7 return del(['./dist/**/*', '!./dist/images/**/*', '!./dist/js/**/*', '!./dist/css/**/*']); //ここの指定方法がわかりません。。 8}); 9 10////////////////////// 11// ファイルコピー 12////////////////////// 13gulp.task('copyT', function() { 14 return gulp.src(['./dist/**/*'],{dot: true, base: './src/assets'}) 15 .pipe(gulp.dest('./dist/**/*')); 16}); 17 18////////////////////// 19// タスク自動化 20////////////////////// 21gulp.task('watchT', function() { 22 gulp.watch(['./src/assets/**/*'], function(){ runSequence('tplcleanT', 'copyT', 'reloadT')}); 23}); 24 25////////////////////// 26// デフォルトタスク 27////////////////////// 28gulp.task('default',['watchT','browserSyncT']); 29
###試したこと
現在、ファイルコピー、コピー前のファイル削除まで正常に動作しているのですが、 削除から除外するファイル指定で躓いています。。
tplcleanT タスクの指定が
js
1return del(['./dist/**/*', '!./dist/images/**/*', '!./dist/js/**/*', '!./dist/css/**/*']);
だと、指定した除外ディレクトリも含め assets 内すべてのファイル、ディレクトリが削除されます。
また、
js
1return del(['./dist/**/*', '!./dist/images)', '!./dist/js', '!./dist/css']);
は、除外ディレクトリは削除されないですが、中のファイルは削除されます。
因みにこちらで、希望通りの動作となりました。
js
1return del(['./dist/**/*', '!./dist/images/**/*', '!./dist/images', '!./dist/js/**/*', '!./dist/js', '!./dist/css/**/*', '!./dist/css']);
しかしスマートな方法ではないと思いますので、適切な指定の仕方を教えていただきたいです。
是非、よろしくお願い致します!!
あなたの回答
tips
プレビュー