详解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中add实现同时选择两个id对象
Oct 22 Javascript
最常用的12种设计模式小结
Aug 09 Javascript
jQuery学习之prop和attr的区别示例介绍
Nov 15 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 Javascript
js实现刷新iframe的方法汇总
Apr 27 Javascript
js+html5实现canvas绘制简单矩形的方法
Jun 05 Javascript
jquery实现左右无缝轮播图
Jul 31 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
webpack打包react项目的实现方法
Jun 21 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 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
Yii获取当前url和域名的方法
2015/06/08 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
js登录弹出层特效
2014/03/07 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python 整数越界问题详解
2019/06/27 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
django项目中新增app的2种实现方法
2020/04/01 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
大学生毕业自我鉴定范文
2013/09/19 职场文书
环保标语大全
2014/06/12 职场文书
社区服务活动小结
2014/07/08 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python