當css-loader
設置modules: true
,CSS的本地默認作用域,但你需要他們在全球上市。最簡單的解決方案是完全刪除modules: true
。您仍可以使用:local在自己的CSS文件中使用模塊。
但是,如果你想使用模塊,有一些變通辦法來導入全局。
定義單獨的規則
反而使模塊爲所有的CSS文件,可以使兩個不同的規則,匹配所需的文件的。因此,假設所有從node_modules
導入的CSS應該被視爲常規(全局)CSS。規則是這樣的:
{
// For all .css files except from node_modules
test: /\.css$/,
exclude: /node_modules/,
use: [
'style-loader',
{ loader: 'css-loader', options: { modules: true } }
]
},
{
// For all .css files in node_modules
test: /\.css$/,
include: /node_modules/,
use: ['style-loader', 'css-loader']
}
當然,你可以在你想要包含/排除,如果您不希望整個node_modules
做什麼更具體。
指定裝載機內嵌
您可以指定在import
的裝載機的WebPack會使用那些在配置的。您可以按如下方式導入引導:
import '!style-loader!css-loader!bootstrap/dist/css/bootstrap.css';
這僅僅是一個快速的解決方法,而無需更改任何配置,但有多個這樣的情況下,特別是當它可能是不可取的。
你在'css-loader'中設置了選項'modules:true'嗎?這將使css在本地範圍內。如果你發佈你的webpack配置會很好,文檔中有很多不同的配置。 –
@MichaelJungo非常感謝!就是這樣:)我從webpack2網頁複製了配置文件,確實有'modules:true' ...很高興知道我是否可以決定是否希望將CSS規則作用於模塊中,而不是使用全局選項? – mguijarr
@MichaelJungo如果您發送一個,我會很樂意回覆您的答案:) – mguijarr