加载css
Webpack可以直接处理JavaScript文件,但是对于css,image,font等,需要使用loaders将这些资源转换成JavaScript,从而形成一个个模块。
我们继续使用上节的例子,这次我们添加一个style.css
文件:
然后在entry.js
文件中导入style.css
,在这里我们先不使用loader,修改entry.js
内容为:
运行webpack entry.js bundle.js
,
生成的bundle文件中函数的参数列表为:
创建一个HTML文件index.html
,内容如下:
因为没有使用loader,webpack是不知道如何解析css文件的,只是把它封装到了一个模块中,并在使用时试图按照JavaScript脚本来处理。打开控制台,可以看到错误信息:
Uncaught ReferenceError: body is not defined
加载一个css文件到底需要几个loader呢?
答案是2个。执行以下命令安装loaders:
npm install css-loader style-loader
其中css-loader
用来处理css文件,style-loader
用来把css应用到页面上。
修改entry.js
中的require代码为:
执行webpack entry.js bundle.js --display-modules
重新打包,刷新页面,可以看到css已经被应用到页面上。
查看终端输出, 文件大小上升了一个数量级:
具体内容这里就不细说了。
!style!css!
这样的写法叫loader管道。loader在应用时从右到左依次调用。
webpack 配置文件
可以用配置文件来管理webpack的配置。添加webpack.config.js
文件:
其中entry
是要处理的javascript文件,output
是输出的bundle文件,loader添加在loaders列表中。
这样在entry.js
文件中就不用添加loader了。
另一种在配置文件中添加loader的方式是:
{ test: /\.css$/, loaders: ["style", "css"] }
提取css
通过上述方式,css也会被打包到生成的bundle文件中。如果想把css文件单独打包,可以使用extract-text-webpack-plugin插件。
安装plugin:
npm install extract-text-webpack-plugin
,
修改config文件:
这样css就会被单独打包到style.bundle.css中了。