详解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 jq 单击和双击区分示例介绍
Nov 05 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
前端性能优化及技巧
May 06 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
javascript表单正则应用
Feb 04 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
Vue Cli与BootStrap结合实现表格分页功能
Aug 18 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 Javascript
前端canvas中物体边框和控制点的实现示例
Aug 05 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
PHP中phar包的使用教程
2017/06/14 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Python中subprocess的简单使用示例
2015/07/28 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
党校学习自我鉴定
2014/02/24 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
原告离婚代理词
2015/05/23 职场文书
单位车辆管理制度
2015/08/05 职场文书
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL