详解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 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
Nov 27 Javascript
通过js随机函数Math.random实现乱序
May 19 Javascript
PHP 502bad gateway原因及解决方案
Nov 13 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
Typescript类型系统FLOW静态检查基本规范
May 25 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
javascript 写类方式之七
2009/07/05 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
关于JS模块化的知识点分享
2019/10/16 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
Python专用方法与迭代机制实例分析
2014/09/15 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
基于python指定包的安装路径方法
2018/10/27 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
应届生法律顾问求职信
2013/11/19 职场文书
家长寄语大全
2014/04/02 职场文书
个人工作主要事迹
2014/05/08 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
初一语文教学反思
2016/03/03 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
python 详解turtle画爱心代码
2022/02/15 Python