详解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 相关文章推荐
新闻内页-JS分页
Jun 07 Javascript
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
js页面跳转常用的几种方式
Nov 25 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
May 24 Javascript
js导出txt示例代码
Jan 14 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
js将滚动条滚动到指定位置的简单实现方法
Jun 25 Javascript
微信小程序日历组件calendar详解及实例
Jun 08 Javascript
JS 封装父页面子页面交互接口的实例代码
Jun 25 Javascript
基于jQuery拖拽事件的封装
Nov 29 jQuery
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
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
Python切换pip安装源的方法详解
2016/11/18 Python
机器学习python实战之手写数字识别
2017/11/01 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
面试后感谢信怎么写
2014/02/01 职场文书
群众路线教育实践活动方案
2014/02/02 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
继承公证书
2014/04/09 职场文书
品酒会策划方案
2014/05/26 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
python中 Flask Web 表单的使用方法
2022/05/20 Python