webpack如何将css文件分离的,详解webpack分离css单独打包

这篇文章只写了如何把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')

]

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack 是一个常用于打包 JavaScript 应用程序的工具,它的主要作用是将多个 JavaScript 文件打包成一个或多个文件,并且可以处理其他资源文件,如 CSS、图片等。在实际开发中,随着项目规模的增大,Webpack 打包速度、体积等问题就会变得越来越重要,因此,Webpack 优化也成为一个不可忽视的问题。 以下是一些常见的 Webpack 优化方法: 1. 减少文件搜索范围 Webpack 会遍历整个项目目录来查找符合要求的文件,这个过程会消耗大量的时间和资源。我们可以通过配置 resolve.modules 和 resolve.extensions 来减少搜索范围,从而提升打包速度。 2. 使用 Tree Shaking Tree Shaking 是指通过静态分析,将代码中用不到的部分去除,只打包项目中实际被使用的代码。这样可以减少打包后的文件体积。在实际开发中,我们可以使用 webpack.optimize.UglifyJsPlugin 和 webpack.optimize.AggressiveMergingPlugin 等插件来实现 Tree Shaking。 3. 使用 Code Splitting Code Splitting 是指将应用程序拆分成多个 bundle,使得每个 bundle 只包含应用程序的一部分功能,从而减少每个 bundle 的体积,提高加载速度。在实际开发中,我们可以使用 Webpack 自带的代码拆分功能,或者使用第三方库如 react-loadable、bundle-loader 等来实现 Code Splitting。 4. 使用缓存 Webpack 默认会将每个文件的 Hash 值作为文件名的一部分,这样可以保证文件内容发生变化时,文件名也会发生变化,从而避免浏览器缓存问题。但是,如果没有改变的文件也每次都重新打包,就会导致打包速度变慢。因此,我们可以使用缓存来提高打包速度。在 Webpack 中,我们可以使用 cache-loader 和 hard-source-webpack-plugin 等插件来实现缓存。 5. 使用 CDN 加速 通过使用 CDN(内容分发网络),可以将静态资源文件分发到全球各地的服务器上,从而提高文件加载速度。在 Webpack 中,我们可以使用 HtmlWebpackPlugin 和 Webpack 自带的 publicPath 配置来实现 CDN 加速。 以上是一些常见的 Webpack 优化方法,当然还有很多其他的优化方法,需要根据具体情况进行选择和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值