2017-05-04 13 views
0

単純なローダーを持っているとしましょう。ファイルをソースからデプロイするだけです。単純な状態のためにルールをコピーしました。私はそれがWebPACKのコンフィグにoutput.pathにコピーし、ファイル・ローダーはそれを処理し、基本的に一度、この1と万人のさまざまな組み合わせを試してみたWebpackファイルローダーが出力パスを操作する

{ 
    test: /\.cshtml$/, 
    use : [{ 
     loader : 'file-loader', 
     options : { 
      name : '[path][name].[ext]', 
      // context :'', 
      // outputPath : '' 
     } 
    }] 
} 

、パスは次のようなものです:

/outputpath/thenfilefromloader/to/folder/goes/here/nameoffile.cshtml

/outputpath/goes/here/nameoffile.cshtml

:「私は何をしようとしている

は、多かれ少なかれ、出力パスでgoesと連結した後に文字列を分割であります

これは達成可能ですか?基本的には、私はガルプを取り除こうとしていますが、これらのファイルはガルプでコピーされていますが、それはそれですが、パスはコピーされる前に操作されました。

答えて

0

私はあなたがやろうとしているものを手に入れる場合は、定義されたパスで[path]プレースホルダを交換して作業を行う必要があります。

{ 
    test: /\.cshtml$/, 
    use : [{ 
     loader : 'file-loader', 
     options : { 
      name : 'goes/here/[name].[ext]', 
     } 
    }] 
} 

ます。また、ファイル名の衝突を避けるためにhashプレースホルダを追加できます:

name : 'goes/here/[name].[hash].[ext]', 
+0

はい、それはすべてのファイルに対して動的である必要があります。ディレクトリに基づいていくつかのルールがあります –

+0

ファイルローダーは非常に多くの柔軟性を提供します[ファイル名テンプレート](https://github.com/webpack-contrib/ファイルローダ#ファイル名テンプレート)。私は自分自身を試したことはありませんが、[webpackのinterpolateName loader-utils](https://github.com/webpack/loader-utils/blob/master/lib/interpolateName.js)を使用しているため、関数を受け入れる必要がありますフード。 –

関連する問題