问题: 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: [
]
};