2017-03-10 4 views
0

だけでは私のイメージのままにします。のWebPACK(反応中)1 + SASS - 私はすべての画像およびその他の資産のフォルダの画像フォルダを持っている私はSASSとReact.jsでプロジェクトを持っているとWebPACKの1に</p> <p>を使用して

私はwebpackに画像を何もしたくありません。私はそれらをURLでランタイムにロードします。 jsxコードでイメージURLをインラインで使用してJSXで解決しました(それをインポートするのではなく)。

しかし、私がSASSで同じことをしようとしているときは、それは違うのです。 私は絶対パス/images/abc.pngでそれらを参照していました。 私はそれらのためのwebpackローダーを持っていなかった、それはちょうど働いた。 しかし、私はそれを相対パス../../www/images/abc.pngに変更しなければなりませんでした。それはすべて壊れました。 Webpackローダーなしでは動作を拒否します。各画像にエラーが発生します。 私はファイルローダーを使用しようとしましたが、すべての画像をビルドフォルダにコピーします。 私はurl-loaderを使用しようとしましたが、結果として非常に肥大化した結果のCSSファイルにイメージが含まれていました。

だから、私は画像を無視してランタイムにURLでアドレスするのには何が使えますか?

おかげ

答えて

1

一つの可能​​性はfalseにurl option of the css-loaderを設定するので、WebPACKのは、URLには触れません。 .scssのためのあなたのルールは何かを見ることができる(あなたがextract-text-webpack-pluginを使用すると仮定して)これを好き:

のWebPACK 1:

{ 
    test: /\.scss$/, 
    loader: ExtractTextPlugin.extract('style-loader', 'css-loader?url=false!sass-loader') 
}, 

のWebPACK 2:

{ 
    test: /\.scss$/, 
    use: ExtractTextPlugin.extract({ 
    fallback: 'style-loader', 
    use: [ 
     { loader: 'css-loader', options: { url: false } }, 
     { loader: 'sass-loader' } 
    ] 
    }) 
} 

しかし、それはすべてのURLだけでなく、あなたのイメージを無視します。それが問題の場合は、file-loaderとオプションemitFile: falseを使用してファイルをコピーしません。しかし正しいパスを得るには、回避策が必要です。名前に[path]を使用すると、contextからの相対パスが使用されます。ディレクトリ(例:build/)に作成するため、publicPathオプションを設定して1つのディレクトリ(../)に移動する必要があります。

のWebPACK 1:

{ 
    test: /\.png/, 
    loader: 'file-loader?emitFile=false&name=[path][name].[ext]&publicPath=../' 
}, 

のWebPACK 2:あなたは、次のルールを与えることになる、あなたのWebPACKの設定でcontextを設定したか、あなたの出力CSSファイルがより大きい場合

{ 
    test: /\.png/, 
    loader: 'file-loader', 
    options: { 
    emitFile: false, 
    name: '[path][name].[ext]', 
    publicPath: '../' 
    } 
} 

ビルドディレクトリの1つ下の階層にある場合は、publicPathオプションを調整する必要があります。

+0

ご協力いただきありがとうございますが、残念ながらそれは役に立たなかったです。 私は最初のオプションを試してみましたが、それでも私のCSSは5Mb以上に肥大化しました。私は2番目の方法を試してみましたが、ビルドフォルダに面白い名前の画像がたくさん残っていました... 私はwebpack1を使用していますが、多分違っていますが、Webpack1の方法にオプションを適用しました – xims

+0

ああ、私はwebpack 1で動作するようにコードを変更しました。そして、最初のオプションでCSSでインラインデータURLを追加した場合、おそらく 'url = false'のない' .scss'ルールがあり、 'url- 'の' 'ローダー'png'と呼ばれる。 '.scss'ルールが1つだけであることを確認してください。第2のオプションを使用する場合は' .png'も同じです。私はwebpack 1でこれらの設定をテストし、期待通りに動作します。 –

+0

ありがとう、それは私が必要としたように働いた! – xims

関連する問題

 関連する問題