dest()#

ファイルシステムにVinylオブジェクトを書き込むためのストリームを作成します。

使用方法#

const { src, dest } = require('gulp');
function copy() {
return src('input/*.js')
.pipe(dest('output/'));
}
exports.copy = copy;

シグネチャ#

dest(directory, [options])

パラメータ#

パラメータ備考
directory
(必須)
文字列
関数
ファイルを書き込む出力ディレクトリのパス。関数が使用される場合、関数は各Vinylオブジェクトで呼び出され、文字列のディレクトリパスを返す必要があります。
optionsオブジェクト下記オプションで詳述されています。

戻り値#

ファイルシステム上にファイルを作成するために、パイプラインの中間または最後に使用できるストリーム。Vinylオブジェクトがストリームを通過するたびに、その内容とその他の詳細が指定されたディレクトリのファイルシステムに書き込まれます。Vinylオブジェクトに`symlink`プロパティがある場合、内容は書き込まれずにシンボリックリンクが作成されます。ファイルが作成された後、そのメタデータは更新され、Vinylオブジェクトと一致するようになります。

ファイルシステムにファイルが作成されるたびに、Vinylオブジェクトが変更されます。

  • `cwd`、`base`、`path`プロパティは、作成されたファイルと一致するように更新されます。
  • `stat`プロパティは、ファイルシステム上のファイルと一致するように更新されます。
  • `contents`プロパティがストリームの場合、再度読み取れるようにリセットされます。

エラー#

`directory`が空文字列の場合、「無効なdest()フォルダ引数です。空でない文字列または関数を指定してください。」というメッセージを含むエラーをスローします。

`directory`が文字列でも関数でもない場合、「無効なdest()フォルダ引数です。空でない文字列または関数を指定してください。」というメッセージを含むエラーをスローします。

`directory`が空文字列または`undefined`を返す関数の場合、「無効な出力フォルダ」というメッセージを含むエラーを発行します。

オプション#

関数を許可するオプションの場合、渡された関数は各Vinylオブジェクトで呼び出され、別のリストされた型の値を返す必要があります。

名前デフォルト備考
cwd文字列
関数
process.cwd()相対パスと組み合わせて絶対パスを形成するディレクトリ。絶対パスでは無視されます。`directory`を`path.join()`と組み合わせるのを避けるために使用します。
mode数値
関数
Vinylオブジェクトの`stat.mode`ファイル作成時に使用するモード。設定されておらず、`stat.mode`がない場合は、代わりにプロセスのモードが使用されます。
dirMode数値
関数
ディレクトリ作成時に使用するモード。設定されていない場合、プロセスのモードが使用されます。
overwriteブール値
関数
truetrueの場合、同じパスを持つ既存のファイルを上書きします。
appendブール値
関数
falsetrueの場合、既存の内容を置き換える代わりに、ファイルの最後に内容を追加します。
sourcemapsブール値
文字列
関数
falsetrueの場合、インラインソースマップを出力ファイルに書き込みます。`string`パスを指定すると、指定されたパスに外部ソースマップが書き込まれます。
relativeSymlinksブール値
関数
falsefalseの場合、作成されるシンボリックリンクはすべて絶対パスになります。
**注記**: ジャンクションを作成している場合は無視されます。ジャンクションは絶対パスでなければなりません。
useJunctionsブール値
関数
trueこのオプションはWindowsでのみ関連があり、それ以外の場所では無視されます。trueの場合、ディレクトリのシンボリックリンクをジャンクションとして作成します。下記Windowsでのシンボリックリンクで詳述されています。

メタデータの更新#

`dest()`ストリームがファイルを作成するたびに、Vinylオブジェクトの`mode`、`mtime`、`atime`が作成されたファイルと比較されます。それらが異なる場合、作成されたファイルはVinylオブジェクトのメタデータに反映するように更新されます。それらのプロパティが同じであるか、gulpに変更する権限がない場合、その試みは黙ってスキップされます。

この機能は、Nodeの`process.getuid()`または`process.geteuid()`メソッドをサポートしていないWindowsやその他のオペレーティングシステムでは無効になっています。これは、Windowsで`fs.fchmod()`と`fs.futimes()`の使用によって予期しない結果が発生するためです。

**注記**: `fs.futimes()`メソッドは内部的に`mtime`と`atime`のタイムスタンプを秒に変換します。1000で除算すると、32ビットオペレーティングシステムでは精度が多少失われる可能性があります。

ソースマップ#

ソースマップのサポートは`src()`と`dest()`に直接組み込まれていますが、デフォルトでは無効になっています。インラインまたは外部ソースマップを作成するには、有効にします。

インラインソースマップ

const { src, dest } = require('gulp');
const uglify = require('gulp-uglify');
src('input/**/*.js', { sourcemaps: true })
.pipe(uglify())
.pipe(dest('output/', { sourcemaps: true }));

外部ソースマップ

const { src, dest } = require('gulp');
const uglify = require('gulp-uglify');
src('input/**/*.js', { sourcemaps: true })
.pipe(uglify())
.pipe(dest('output/', { sourcemaps: '.' }));

Windowsにおけるシンボリックリンク#

Windowsでシンボリックリンクを作成する場合、リンク先のタイプを指定する`type`引数が、Node.jsの`fs.symlink()`メソッドに渡されます。リンクタイプは、

  • リンク先が通常のファイルの場合は`'file'`
  • リンク先がディレクトリの場合は`'junction'`
  • リンク先がディレクトリであり、ユーザーが`useJunctions`オプションを無効にした場合は`'dir'`

存在しないターゲットを指す(ぶら下がり)リンクを作成しようとすると、リンクタイプを自動的に判断できません。このような場合、ぶら下がりリンクが`symlink()`を介して作成されるか`dest()`を介して作成されるかによって、動作が異なります。

`symlink()`を介して作成されたぶら下がりリンクの場合、入力されるVinylオブジェクトはターゲットを表すため、その統計情報によって目的のリンクタイプが決定されます。`isDirectory()`がfalseを返す場合、`'file'`リンクが作成され、それ以外の場合は`useJunctions`オプションの値に応じて`'junction'`または`'dir'`リンクが作成されます。

`dest()`を介して作成されたぶら下がりリンクの場合、入力されるVinylオブジェクトはリンクを表します。これは通常、`src(..., { resolveSymlinks: false })`を介してディスクから読み込まれます。この場合、リンクタイプを合理的に判断することはできず、デフォルトで`'file'`が使用されます。これは、ディレクトリへのぶら下がりリンクを作成する場合に予期しない動作を引き起こす可能性があります。**このシナリオは避けてください。**