問題: webpack 打包成功,但是css不起作用
問題分析/解決: 原因有以下幾種
- 使用了webpack2的語法規則不正確; webpack2要求必須寫
-loader
; - 可能是只寫了css-loader,沒有寫style-loader;
- 順序反了,必須寫成
style-loader!css-loader
;
擴展:
- 問: 如果沒寫
style-loader
或者沒寫css-loader
會怎么樣;
答:
沒寫style-loader
則build文件會生成,但你會發現頁面中js不起作用;
沒寫css-loader
則會直接報錯:’You may need an appropriate loader to handle this file type.’ - 問:
style-loader
和css-loader
的作用是什么?
答:
style-loader
只是沒起作用而不報錯就意味着它的作用是將樣式插入到DOM元素中;結合網上的答案以及觀察預覽頁面發現:style-loader會在頁面的header
標簽里生成內部的<style></style>
;
css-loader
會報錯,是因為它影響到webpack的build的過程了。結合網上分享以及’You may need an appropriate loader to handle this file type.’報錯信息,意味着css-loader的存在使得在js中通過require
或者import
引入css成功;通過css-loader,可以實現在js文件中通過require的方式,來引入css。
我的配置文件
const webpack = require('webpack');
const path = require('path');
module.exports = {
entry: {
'bundle': './a.js',
},
output: {
path: path.resolve(__dirname, 'build'),
filename: '[name].js',
chunkFilename: '[name].js'
},
module: {
loaders: [
{
test: /\.css$/,
loader: 'style-loader!css-loader'
},
{
test: /\.js[x]?$/,
exclude: 'node_modules/',
loader: 'babel-loader'
}
]
},
plugins: [
]
};