详解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 弹出层插件实现代码
Oct 24 Javascript
了解jQuery技巧来提高你的代码
Jan 08 Javascript
收集的10个免费的jQuery相册
Feb 26 Javascript
JavaScript类型系统之正则表达式
Jan 05 Javascript
Jquery基础之事件操作详解
Jun 14 Javascript
ajax与json 获取数据并在前台使用简单实例
Jan 19 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 Javascript
JS实现横向轮播图(初级版)
Jun 24 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
OpenLayers3实现鼠标移动显示坐标
Sep 25 Javascript
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
Javascript var变量隐式声明方法
2009/10/19 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python Django框架实现自定义表单提交
2016/03/25 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
实用自动化运维Python脚本分享
2018/06/04 Python
python随机数分布random测试
2018/08/27 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Django实现文件上传下载
2019/10/06 Python
Python实现快速排序的方法详解
2019/10/25 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
Hammitt官网:设计师手袋
2020/05/23 全球购物
管理部部长岗位职责
2013/12/05 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
北京颐和园导游词
2015/01/30 职场文书
歌剧魅影观后感
2015/06/05 职场文书
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js