2017-07-11 7 views
1

Webpackを使用しているアプリがあります。このアプリでは、sourceディレクトリにあるさまざまなディレクトリの静的な.htmlファイルをpublicディレクトリの同じ階層にコピーする必要があります。これを行うには、CopyWebpackPluginを使用しています。この時、私のwebpack.config.jsファイルは次のようになります。Webpack - CopyWebpackPluginを使用してソースからパブリックにファイルをコピーする

webpack.config.js

const path = require('path'); 
const projectRoot = path.resolve(__dirname, '../'); 

const CopyWebpackPlugin = require('copy-webpack-plugin'); 

module.exports = { 
    entry: { 
    app: './source/index.html.js', 
    }, 
    output: { 
    path: path.resolve(__dirname, 'public'), 
    filename: '[name].package.js' 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.css$/, 
     loaders: ['style-loader','css-loader']   
     }, 
    ] 
    }, 
    plugins: [ 
    new CopyWebpackPlugin(
     [ { from: './source/**/*.html', to: './public', force:true } ], 
     { copyUnmodified: true } 
    ) 
    ] 
}; 

を私はコマンドラインからwebpackを実行すると、すべてが私が望むように動作します。 HTMLファイルはディレクトリを含めてpublicディレクトリに正常にコピーされます。ただし、コピーすると、ソースディレクトリ名が含まれます。例えば、私のディレクトリ構造は次のようである場合:

/source 
    /dir-1 
    /child-a 
     index.html 
     page.html 
    /child-b 
     index.html 
     contact.html 
    /dir-2 
    index.html 

私は次のように出力するCopyWebpackPluginの結果を期待している:期待

/public 
    /dir-1 
    /child-a 
     index.html 
     page.html 
    /child-b 
     index.html 
     contact.html 
    /dir-2 
    index.html 

をしかし、どのような私は実際に次のようになっています:

実際:

/public 
    /source 
    /dir-1 
     /child-a 
     index.html 
     page.html 
     /child-b 
     index.html 
     contact.html 
    /dir-2 
     index.html 

コピー先にはsourceディレクトリが含まれています。なぜこれが含まれているのか分かりません。もっと重要なことに、私はそれを削除する必要があります。ターゲット内のパスからsourceディレクトリを削除するにはどうすればよいですか?

答えて

2

context paramを使用できます。

new CopyWebpackPlugin(
    [{ 
     context: './source/' 
     from: '**/*.html', 
     to: './public', 
     force: true 
    }], { 
     copyUnmodified: true 
    } 
) 
関連する問題