現在、gulpを使用してdist/
ディレクトリをクリーンアップし、適切なファイルをクリーンディレクトリに移動するbashスクリプトを呼び出しています。スクリプトが* nix以外のファイルシステムで動作するかどうかわからないので、これをgulpで実行したいと思います。
これまで、gulp-cleanモジュールを使用してdist/
ディレクトリをクリーンアップしていますが、必要なディレクトリとそのファイルをdistフォルダに移動しようとすると、ディレクトリは空です。
var gulp = require('gulp'),
clean = require('gulp-clean');
gulp.task('clean', function(){
return gulp.src(['dist/*'], {read:false})
.pipe(clean());
});
gulp.task('move',['clean'], function(){
gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
.pipe(gulp.dest('dist'));
});
gulp.task('dist', ['move']);
gulp dist
を呼び出すと、dist/
ディレクトリに正しいディレクトリが入力されますが、すべて空です
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
ディレクトリとその内容をdist/
フォルダーにコピーするにはどうすればよいですか?
Srcに base
オプション を含める必要があります。これにより、ファイル構造が希望どおりに保持されます。
var filesToMove = [
'./_locales/**/*.*',
'./icons/**/*.*',
'./src/page_action/**/*.*',
'./manifest.json'
];
gulp.task('move',['clean'], function(){
// the base option sets the relative root for the set of files,
// preserving the folder structure
gulp.src(filesToMove, { base: './' })
.pipe(gulp.dest('dist'));
});
また、プロジェクトのルートにこれらのすべてのソースファイルがある場合は、おそらく問題が発生するでしょう。
可能であれば、単一のsrc/
フォルダを使用して移動することをお勧めしますallアプリケーション固有のファイルをそこに入れます。これにより、メンテナンスが容易になり、ビルド固有のファイルがアプリケーション固有のファイルと混同されるのを防ぎます。
これを行う場合は、上記の例で./
のすべての出現をsrc/
に置き換えるだけです。
元の質問は、そのgulp.src
のディレクトリ(別名フォルダ)、つまりこの例ではgulp.src(['_locales', ...
のみを対象としています。_locales
はディレクトリの名前です。
受け入れられた答えは、gulp.src
で glob
pattern を使用して、それらのディレクトリ内のfilesをターゲットにします。つまり、gulp.src(['./_locales/**/*.*', ...
(double-アスタリスク、およびfilename.extensionアスタリスク)。受け入れられた答えは機能します...
...しかし、受け入れられた答えはbase
オプションのみを強調します:
Srcに
base
optionを含める必要があります...
私は実験して見つけました:
厳密に言えば、OPが要求したことを達成するためにbase
オプションを使用する必要はありません。「...そして適切なfilesをクリーンディレクトリに移動します。」 base
オプションはが実際にfolder + fileを保持します構造体(受け入れられた回答で説明されています)が、base
オプションはOP askとしてファイルを移動するには十分ではありませんです。フォルダとファイルの構造を保存することは、おそらくOP が期待するなので、受け入れられた答えは良いですが...
ファイルをする移動することを繰り返すために、それはglob
パターンです:
ダブルアスタリスク(.../**/...
)は、すべてのサブフォルダー、およびサブフォルダーのサブフォルダーなどを再帰的に検索します。
Filename.extensionアスタリスク(.../*.*
)は、すべての名前、およびすべての拡張子のfilesを見つけます。 だからこの部分が最も重要だと思う!
受け入れられた答えは何か他のものを変えます。 ./
に渡される各パス引数にgulp.src
のプレフィックスを追加します。それは不要/冗長だと思います。 (OPの質問のように)./
がない場合、パスは現在のディレクトリに関連して解決されます-同じ動作になります。ただし、./
を明示的に使用することをお勧めします
間違えたら教えてください...