详解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的动态创建DOM元素的代码
Dec 28 Javascript
读JavaScript DOM编程艺术笔记
Nov 15 Javascript
自动设置iframe大小的jQuery代码
Sep 11 Javascript
js运动动画的八个知识点
Mar 12 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
详解JS获取HTML DOM元素的8种方法
Jun 17 Javascript
JS图片轮播与索引变色功能实例详解
Jul 06 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
May 14 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 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中通过smtp发邮件的类,测试通过
2007/01/22 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
如何做好总经理助理
2013/11/12 职场文书
英语故事演讲稿
2014/04/29 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS