详解webpack分离css单独打包


Posted in Javascript onJune 21, 2017

这篇文章只写了如何把CSS打包成一个CSS文件,没有讲解如何打包成多个CSS文件,经简友提点,这里添加上了 打包成多个CSS文件的方法。

瞎扯

webpack 把所有的资源都当成了一个模块, CSS,Image, JS 字体文件 都是资源, 都可以打包到一个 bundle.js 文件中.

但是有时候需要把样式 单独的打包成一个文件, 然后放到 CND上, 然后缓存到浏览器客户端中

一、extract-text-webpack-plugin 使用方法

这个操作很简单的,只需要一个插件就好了,就是extract-text-webpack-plugin

1. 安装extract-text-webpack-plugin

npm install extract-text-webpack-plugin --save-dev

2. 配置文件添加对应配置

首先require一下

var ExtractTextPlugin = require("extract-text-webpack-plugin");

plugins里面添加

new ExtractTextPlugin("styles.css"),

实例:

plugins: [
  new webpack.optimize.CommonsChunkPlugin('common.js'),
  new ExtractTextPlugin("styles.css"), 
],

modules里面对css的处理修改为

{
 test: /\.css$/,
  loader: ExtractTextPlugin.extract("style-loader","css-loader")
},

千万不要重复了,不然会不起作用的

我这里如下:

module: {
  loaders: [
   {
   test: /\.css$/,
    loader: ExtractTextPlugin.extract("style-loader","css-loader")
  },
   {
   test: /\.scss$/,
    loader: "style!css!sass"
  },
   {
   test: /\.less$/,
    loader: "style!css!less"
  },
 ]
},

3. 在引入文件里面添加需要的css,【举例如下】

require('../less/app.less');
require('./bower_components/bootstrap-select/dist/css/bootstrap-select.min.css');
require('./bower_components/fancybox/source/jquery.fancybox.css');

二、如何把CSS打包成一个文件, 和 把CSS打包成多个文件

打包一个文件,只需要常规的在入口的js文件引用 css文件即可, 打包成多个CSS文件,可以设置多个CSS入口,让webpack用 loader去打包。 和分割单独打包js文件一样。下面有两个例子。

// 使用webpack 打包单独的postcss语法的css文件
/* webpack.config.js */
var precss = require('precss');
var cssnext = require('cssnext');
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
var Ex = require('extract-text-webpack-plugin');
module.exports = {
 entry: './【path】/index.js',
 /* index.js 里 require('./【name】.css');就好 我在看看文档是不是直接不用引入js文件 */
 output: {
  filename: 'index.js'
 },
 module: {
  loaders: [{
  test: /\.css$/,
  loader: Ex.extract('style-loader', 'css-loader!postcss-loader') /*这里的写法注意下 */
  }]
 },
 postcss: function() {
  return [autoprefixer, cssnext, precss, cssnano]
 },
 plugins: [
  new Ex("【name】.css")
 ]
 }

 // 使用webpack 打包单独的多个postcss语法的css文件
var precss = require('precss');
var cssnext = require('cssnext');
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
var Ex = require('extract-text-webpack-plugin');
var webpack = require('webpack');


module.exports = {
 entry: {
 ac1: './src/actother.css',
 ac2: './src/index.css'
 },
 output: {
 filename: "[name].css"
 },
 module: {
 loaders: [{
  test: /\.css$/,
  loader: Ex.extract('style-loader', 'css-loader!postcss-loader')
 }]
 },
 postcss: function() {
 return [autoprefixer, precss, cssnano, cssnext]
 },
 plugins: [
 new Ex('[name].css')
 ]
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
JavaScript返回网页中锚点数目的方法
Apr 03 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
js实现同一页面多个运动效果的方法
Apr 10 Javascript
JS实现模拟风力的雪花飘落效果
May 13 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
浅谈Angular4中常用管道
Sep 27 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
关于对TypeScript泛型参数的默认值理解
Jul 15 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
Jun 21 #Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 #Javascript
基于jquery日历价格、库存等设置插件
Jul 05 #jQuery
详解Angular 自定义结构指令
Jun 21 #Javascript
详解Angular2 之 结构型指令
Jun 21 #Javascript
JavaScript用200行代码制作打飞机小游戏实例
Jun 21 #Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 #Javascript
You might like
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
php 图片上传类代码
2009/07/17 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
python win32 简单操作方法
2017/05/25 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
用python实现的线程池实例代码
2018/01/06 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
编辑个人求职信范文
2013/09/21 职场文书
机关门卫岗位职责
2013/12/30 职场文书
大型活动策划方案
2014/01/12 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
资金申请报告范文
2015/05/14 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
聘任书格式及范文
2015/09/21 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL