详解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几个验证函数代码
Mar 25 Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
实例详解jQuery表单验证插件validate
Jan 18 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
bootstrap3中container与container_fluid外层容器的区别讲解
Dec 04 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
JS 封装父页面子页面交互接口的实例代码
Jun 25 Javascript
javascript自定义加载loading效果
Sep 15 Javascript
JS中队列和双端队列实现及应用详解
Sep 29 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第一次无法获取cookie问题处理
2014/12/15 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
Python实现截屏的函数
2015/07/26 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python numpy 常用函数总结
2017/12/07 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python3 求约数的实例
2019/12/05 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
python如何操作mysql
2020/08/17 Python
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
农民工工资发放承诺书
2014/03/31 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
庆六一宣传标语
2014/10/08 职场文书
电影开国大典观后感
2015/06/04 职场文书
php 原生分页
2021/04/01 PHP
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
Python中glob库实现文件名的匹配
2021/06/18 Python