详解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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
js实现连个数字相加而不是拼接的方法
Feb 23 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
详解vue axios中文文档
Sep 12 Javascript
jquery自定义显示消息数量
Dec 19 jQuery
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 Javascript
详解一个基于套接字实现长连接的express
Mar 28 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
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python程序控制NAO机器人行走
2019/04/29 Python
如何更优雅地写python代码
2019/07/02 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Python简易版停车管理系统
2019/08/12 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python流程控制 while循环实现解析
2019/09/02 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
python热力图实现简单方法
2021/01/29 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
党员个人年度总结
2015/02/14 职场文书
小学生表扬稿范文
2015/05/05 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python