Reactについて少し調べて、CSS/SCSSモジュール処理のためにsass-loaderを試し始めました。 Iすでに完全なセットアップのほとんどをしましたが、私は私が対処する方法が本当にわからない問題を抱えて、私は次のシナリオでそれを提示:WebpackとSass-Loaderファイルのインポート順
ComponentA.jsx
import React from 'react';
import ComponentB from './app/components/ComponentB.jsx';
// Importing Core CSS module for component A
require("./ComponentA.scss");
export default class ComponentA extends React.Component{
constructor(){
...
}
render(){
return (
<div>
<ComponentB />
</div>
);
}
}
webpack.config.js
ComponentB.jsx
import React from 'react';
// Importing CSS module for component B with some overriding content for component A
require("./ComponentB.scss");
export default class ComponentB extends React.Component{
constructor(){
...
}
render(){
return (
...
);
}
}
このセットアップから
var path = require("path"); var ExtractTextPlugin = require("extract-text-webpack-plugin"); module.exports = { devServer: { contentBase: path.join(__dirname, "../build") }, entry: path.join(__dirname,"../app/ComponentA.jsx"), module:{ loaders: [ { test: /\.jsx?$/, loader: 'babel', query: { presets: ['react', 'es2015'] } }, { test: /\.(scss|css)$/, loader: ExtractTextPlugin.extract(['css','sass']) }, ... ] }, output: { path: path.join(__dirname, "..", "build"), filename: "bundle.js", publicPath: "/" }, plugins: [ new ExtractTextPlugin( "style.css", { allChunks: true } ) ] };
は、WebPACKのは期待通りに働いて、新しいファイルを作成しのstyle.css(事実上の当然私は開発によなど)、しかし... SCSSコンテンツファイルは順番ことでレンダリングされませんでした私はそれがそうであると思った。
得style.cssにコンテンツは以下のように配置した
- ComponentB.scssコンテンツ
- ComponentA.scssコンテンツ
代わりの:
- ComponentA。 scssコンテンツ
- ComponentB.scssの内容
私はそれが階層にあることを意味しました。これは、コンポーネントAベースCSSをオーバーライドする場合、階層順でファイルをマージするためにwebpackとsass-loaderが必要になるという点で問題です。
ので、この後のご質問は、次のようになります。
私はそれが木の上を通過する際に、モジュールをロードするためにSASS-ローダーを設定するにはどうすればよいですか?
またはさらに簡単な...
これを行うには良い方法はありますか?
お返事ありがとうございます!あなたが提供した情報の中でlocal-cssについて読んだことがあります。私の提供するシナリオでは面白くて機能的だと思われます。 –
_二重投稿して申し訳ありませんが、前のコメントでアイデアを完成しませんでした。_ ExtractTextPluginが作成された理由は、CSSを分割して縮小する理由データはコンポーネントによって使用されています。 この場合、CSSページを「必要とする」という目的に反しないのですか?それとも、インラインCSSを使うのが本当に良いケースでしょうか? –
ローカライズする必要のあるクラスに対しては、依然として 'require'を使用して、必要なCSSファイルに':local'を追加することができます。コンパイル時にインライン展開されますが、それについて心配する必要はありません。これはもちろん、CSSファイルはすべてのページにロードされるのではなく、必要なページにロードされるという利点があります。 [ここ](https://github.com/erikras/react-redux-universal-hot-example/blob/master/docs/InlineStyles.md)は、あなたがもっと興味を持っているならば、それに関する少しの資料です。 –