本文介绍了webpack分离css单独打包的方法,分享给大家,具体如下:
CHANGELOG
2018-02-08 14:46:06
刚看了下,网上查了 webpack单独打包css,找到的文章,本文比较靠前,但是由于写的比较混乱,因此重新整理一下内容,更通俗易懂一点。
2018-02-01 14:45:23
由于这篇文章只写了如何把CSS打包成一个CSS文件,没有讲解如何打包成多个CSS文件,经简友提点,这里添加上了 打包成多个CSS文件的方法。
2016-05-17 11:55
刚学习webpack,记录一下webpack如何单独打包css
零、介绍
以下是个人项目中总结出来的一些基本知识,记录在这里,加深自己的印象,也让大家能够更快速方便的了解webpack,并且使用它。能力所限,有错误或者问题,请帮忙指出。
webpack 把所有的资源都当成了一个模块,CSS,Image,JS 字体文件 都是资源,都可以打包到一个 bundle.js 文件中.
webpack基本的使用很简单,但是要方方面面都讲解的话内容很多,因此这边主要讲解一下 如何使用webpack单独打包css。
至于打包出来,怎么加hash值,怎么替换html中的引用路径,怎么上传到CND可以使用gulp来实现。【有兴趣后面在写一篇文章】
一、extract-text-webpack-plugin 用法
单独打包css,在webpack需要使用一个插件,extract-text-webpack-plugin
1. 安装extract-text-webpack-plugin
yarn add extract-text-webpack-plugin
2. 配置
加载器里面写好插件的配置(使用什么加载器),在webpack的 plugins 里面设置抽离出来的CSS文件名叫什么。
稍微详细点,可以参考这个《》
下面放两个实际使用例子,方便大家理解
二、单页面应用,把JS里面的CSS单独打包
打包一个文件,只需要常规的在入口的js文件引用 css文件即可, 打包成多个CSS文件,可以设置多个CSS入口,让webpack用 loader去打包。 和分割单独打包js文件一样。下面有两个例子。
三、webpack如何打包多个CSS文件
下面直接提供一个完成的多入口CSS打包配置
var CSSPATH = {
css: {
pattern: ['./src/**/[^]*.less','!./src/old/*/.less'],src: path.join(dirname,'src'),dst: path.resolve(dirname,'static/build/webpack'),}
}
// 遍历除所有需要打包的CSS文件路径
function getCSSEntries(config) {
var fileList = glob.sync(config.pattern)
return fileList.reduce(function (prevIoUs,current) {
var filePath = path.parse(path.relative(config.src,current))
var withoutSuffix = path.join(filePath.dir,filePath.name)
prevIoUs[withoutSuffix] = path.resolve(__dirname,current)
return prevIoUs
},{})
}
module.exports = [
{
devtool: 'cheap-module-eval-source-map',context: path.resolve(__dirname),entry: getCSSEntries(CSS_PATH.css),output: {
path: CSS_PATH.css.dst,filename: '[name].css'
},module: {
rules: [
{
test: /.less$/,use: ExtractTextPlugin.extract({
use: ['css-loader','postcss-loader','less-loader']
})
}
]
},resolve: {
extensions: ['.less']
},plugins: [
new ExtractTextPlugin('[name].css'),]
},// 如果还需要打包js,则可以在这里增加一个单独打包js的处理【根据自己需求来】
// {
// entry:{},// output:{},// ... 省略
// }
]
可能有同学还在使用webpack1.x,所以这里在贴一下webpack1.x 的简单配置