2016-09-05 10 views
1

私は、サーバーのビルドを構築するためにWebPACKのを使用して、設定は次のようになります。webpackのローダーの優越性を定義する方法は?

loaders: [ 
    { 
    test: /\.js$/, 
    exclude: [/node_modules/], 
    loader: "babel-loader", 
    query: { 
     presets: ["es2015", "react"], 
     plugins: ["transform-object-rest-spread"] 
    } 
    }, { 
    test: new RegExp(`/ 
     stardust 
     |redux-form 
     |axios 
     |shuffle 
    `), 
    loader: "null-loader" 
    } 
] 

アイデアは非常に単純です:何かが二ローダーで正規表現に一致した場合、それがロードされるべきではありません。私はこれをロードしていますまで、それはうまく動作します:

import shuffle  from "shufflejs/dist/shuffle.min.js" 

それはバンドルにローダーとロードされたの両方に一致します。 null-loaderの優先順位をバベルより高くするにはどうすればよいですか?

+0

実際には答えはありませんが、最初に 'null-loader'を置くとどうなりますか?インポート時には常にローダの種類を指定することもできます。 'import shuffle from" babel-loader!shufflejs/dist/shuffle.min.js " – cgatian

+0

私はそれを試みました。残念ながら – asiniy

答えて

1

webpack documentationに記載されているようにプリローダーを使用することができます。基本的にはローダーの前にプリローダーとしてヌルローダーを使用して解決します。したがって、正規表現がnullローダーと一致する場合、モジュールがロードされません。

preLoaders: [ 
    { 
     test: new RegExp(`/ 
      stardust 
      |redux-form 
      |axios 
      |shuffle 
     `), 
     loader: "null-loader" 
    } 
], 
loaders: [ 
    { 
     test: /\.js$/, 
     exclude: [/node_modules/], 
     loader: "babel-loader", 
     query: { 
      presets: ["es2015", "react"], 
      plugins: ["transform-object-rest-spread"] 
     } 
    } 
] 

私は考えることができる唯一の他のソリューションは、これらの単語を含むファイルを除外するために正規表現に依存することです:

はここで変更されたコードです。私はRegexの専門家ではありませんが、式を提案しようとします:

loaders: [ 
    { 
     test: /^(?!stardust|redux-form|axios|shuffle)([a-zA-Z]+)\.js$/, 
     exclude: [/node_modules/], 
     loader: "babel-loader", 
     query: { 
      presets: ["es2015", "react"], 
      plugins: ["transform-object-rest-spread"] 
     } 
    } 
] 
+0

私はプリローダーを試しましたが、残念ながら – asiniy

+0

は動作しません。もう1つの方法は、テスト正規表現を使用して、これらの名前をbabelローダーによって解決されないようにすることです。私はその解決策で私の答えを更新しました。 –

+0

興味深いアイデア!これは動作しますが、それほどエレガントではありません – asiniy

関連する問題