1. ホーム
  2. node.js

[解決済み] gulp を使ってディレクトリとそのファイルを選択・移動する

2023-01-15 17:54:54

質問

現在、私はgulpを使ってbashスクリプトを呼び出し、私の dist/ ディレクトリをクリーンにして、適切なファイルをクリーン ディレクトリに移動します。このスクリプトが *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/ フォルダーにコピーするのですか?

どのように解決するのですか?

を含める必要があります。 base オプション を src に追加することで、ファイル構造を希望通りに保持することができます。

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'));
});


また、これらのソースファイルをすべてプロジェクトのルートに置いておくと、おそらく先々で問題が発生するでしょう。

もし が使えるのであれば、1つの src/ フォルダに移動し すべて をそこに移動します。 これにより、今後のメンテナンスが容易になり、ビルド固有のファイルとアプリケーション固有のファイルが混在するのを防ぐことができます。

もしこれを行うなら、単に ./src/ のような形で記述します。