详解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的让textarea自适应高度的插件
Aug 03 Javascript
js自动闭合html标签(自动补全html标记)
Oct 04 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 Javascript
JavaScript+CSS相册特效实例代码
Sep 07 Javascript
判断滚动条滑到底部触发事件(实例讲解)
Nov 15 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
vue实现简单的日历效果
Sep 24 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自定义函数实现格式化秒的方法
2016/09/14 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
14款NodeJS Web框架推荐
2014/07/11 NodeJs
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
js实现登录与注册界面
2017/11/01 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
Python编程中装饰器的使用示例解析
2016/06/20 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
卫校中专生个人自我评价
2013/09/19 职场文书
资深生产主管自我评价
2013/09/22 职场文书
企业内控岗位的职责
2014/02/07 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
物流专业自荐信
2014/05/23 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
政府四风问题整改措施
2014/10/04 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers