まとめ
CopyWebpackPlugin は、ソース ディレクトリからビルド ディレクトリにファイルをコピーするための強力な Webpack プラグインです。この記事では、CopyWebpackPlugin のいくつかの一般的な API を検討し、サンプル コードを提供します。
Web アプリケーションを構築するときは、通常、いくつかの静的ファイル (HTML、CSS、画像など) をソース ディレクトリからビルド ディレクトリにコピーする必要があります。この機能を実現するには、CopyWebpackPlugin を使用します。このプラグインはソース ファイルをビルド ディレクトリにコピーでき、コピー動作をカスタマイズできます。
よく使用される API
patterns
: コピー元ファイルとコピー先ファイルに関する情報を含む配列。各配列要素は、次のプロパティを持つオブジェクトです。
from
: ソース ファイルのパスまたはパターン。文字列または正規表現を使用できます。to
: 対象ファイルのパス。文字列または関数を指定できます。toType
: 対象のファイルの種類。'file'
または にすることができます'dir'
。デフォルト値は です'file'
。flatten
: ソース ファイルをターゲット ファイルのサブディレクトリにコピーするかどうか。デフォルト値は ですfalse
。transform
: ソースファイルをコピーする前に変換する機能。
options
concurrency
: (同時にコピーされるファイルの数) やoverwrite
(既存のファイルを上書きするかどうか)など、いくつかのグローバル オプションを含むオブジェクト。filter
:
例
簡単な CopyWebpackPlugin 設定例を次に示します。
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
plugins: [
new CopyPlugin({
patterns: [{
from: 'src/index.html',
to: 'dist/index.html'
},
{
from: 'src/assets',
to: 'dist/assets'
},
{
from: 'src/images',
to: 'dist/images',
toType: 'dir'
},
{
from: 'src/styles.css',
to: 'dist/styles.css',
transform: (content, path) => minifyCSS(content)
},
{
from: '**/*',
to: './',
globOptions: {
ignore: ['**/*.js', '**/*.scss', '**/*.ts']
}
},
{
from: "public/**/*",
filter: async (resourcePath) => {
const data = await fs.promises.readFile(resourcePath);
const content = data.toString();
if (content === "my-custom-content") {
return false;
}
return true;
},
},
],
options: {
concurrency: 10,
overwrite: true
}
})
]
};
この例では、CopyWebpackPlugin インスタンスを作成し、コピーするファイルとディレクトリを指定します。最初のモードsrc/index.html
はファイルをファイルにコピーしdist/index.html
、2 番目のモードはsrc/assets
ディレクトリをディレクトリにコピーdist/assets
し、3 番目のモードはsrc/images
ディレクトリをdist/images
ディレクトリにコピーし、4 番目のモードはsrc/styles.css
ファイルをdist/styles.css
ファイルにコピーし、コピーする前に内容を変換します (例: 圧縮 CSS)。また、同時にコピーするファイルの数や既存のファイルを上書きするかどうかなど、いくつかのグローバル オプションも指定します。
書類
npmjs.com/package/copy-webpack-plugin