2017-03-06 8 views
4

既存プロジェクトのビルドシステムをgulpからwebpackに移行しようとしています。それは、現在、以下のように様々な他のファイルをインポートし、単一のエントリポイント.lessファイルがあるless-plugin-globをWebpackで使用する

@import 'bower_components/bootstrap/less/bootstrap.less'; 
@import 'components/**/*.less'; 

をこれが見つかりました。.lessのすべてのファイルを含む単一のCSSファイルを書き出します。グロブを許可するにはhttps://github.com/just-boris/less-plugin-globを使用します。

ウェブパックでは、同じことを達成するために、less-loadercss-loaderstyle-loaderの組み合わせを使用しようとしています。

var lessPluginGlob = require('less-plugin-glob'); 
... 
{ 
    test: /\.less$/, 
    use: [ 
     'style-loader', 
     { loader: 'css-loader', options: { importLoaders: 1 } }, 
     { loader: 'less-loader', options: { lessPlugins: [lessPluginGlob] }} 
    ] 
}, 

と、私はそうのように私の「エントリ」以下のファイルを必要としようとしています:私のWebPACKの設定のmodules一部はこのようになります

require('./app.less'); 

が、私は、私はこれを取得何をすべきかに関係なく:

ERROR in ./~/css-loader?{"importLoaders":1}!./~/less-loader?{"lessPlugins":[{}]}!./app/app.less 
Module build failed: Can't resolve './components/**/*.less' in '/Users/matt/web-app/app' 

誰でも正しい方向に向けることができますか?

+0

ねえ、私が午前と同じ問題http://stackoverflow.com/questions/43527423/webpack-import-multiple-less-files-using-glob-expressions。あなたはこれまでの解決策を考え出しましたか? –

+0

私は恐れていません@Semih Gk。 - 最後にファイルを列挙して、後でそれに戻ってくると思った。 –

+0

Thanks @Math Wilson。さて、これまでのところ良い解決策を見つけることはできませんでしたが、少なくとも私は方法を見つけました。あなたが良いものを見つけない限り、あなたはそれを考慮するかもしれません。私は私の質問の下にそれを掲示します。 –

答えて

2

私はそれがこのように動作し作られました:

... 
{ 
    loader: 'less-loader', 
    options: { 
     paths: [ 
      path.resolve(path.join(__dirname, 'app')) 
     ], 
     plugins: [ 
      require('less-plugin-glob') 
     ] 
    } 
} 

ソースコードをチェックアウト:https://github.com/webpack-contrib/less-loader/blob/master/src/getOptions.js#L22

を私はそれがintendend行動のかどうか分かりませんが、pathscreateWebpackLessPluginビーイングが指定されていない場合まず、less-plugin-globプラグインの前に実行します。 createWebpackLessPluginは次のプラグインについて何も知らないので、エラーが発生します。

私の解決策はpathsを指定してless-plugin-globを最初に実行させることでした。

の作業例:https://github.com/notagency/webpack2-with-less-plugin-glob

関連する問題