webpack4.x 关于style-loader和css-loader的配置以及JS的生产环境压缩 第五节

loaders:在webpack里面是一个很重要的功能 表示加载器、转换器

通常情况下,webpack只对js文件提供支持,但是比如说less/sass/css/ES7等就不认识了,这时候就需要使用loaders来帮助它转化了.

接下来聊聊CSS的处理吧

这时就需要借助style-loader和css-loader了

我们在src下建一个css目录,然后建一个a.css文件

//index.html
<!DOCTYPE html>
<html>
<head>
    <title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
    <div id="root">aaaa</div>
</body>

//a.css
body {
    background: #ccc;
}

-我们在index.js文件里面引入a.css

// index.js
import './css/a.css';
document.write('welcome');

处理css文件

这时是报错的,我们是要使用loader的,处理css文件我们需要使用到

style-loader

css-loader

1.安装style-load css-loader

cnpm i style-loader css-loader -D

2.配置

首先我们写一个module,在里面rules(规则),rules是一个数组,里面可以写一条一条的规则

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
// const CleanWebpackPlugin = require('clean-webpack-plugin');
const Webpack = require('webpack');

module.exports = {
    entry:{
        entry: './src/index.js'
    }, 
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'[name]-bundle.js' 
    },
    module:{ //我写一个module
        //配置一个rules(规则),rules是一个数组,里面包含一条一条的规则
        rules:[
            {
                // test 表示测试什么文件类型
                test:/\.css$/,
                // 使用 'style-loader','css-loader'
                use:['style-loader','css-loader']
            }
        ]
    },
    devServer:{
        contentBase:path.resolve(__dirname,'dist'), //最好设置成绝对路径
        host:'localhost',
        port:8090,
        open:true,
        hot:true
    },
    plugins:[
        new Webpack.HotModuleReplacementPlugin(),
        new HtmlWebpackPlugin({
            title:'Hello World',
            template: './src/index.html' //模板地址
        })
    ]
}

这时候我们运行 npm run dev,我们发现css生效了.

上面我们使用的是use的写法,我们也可是使用loader的写法,效果是同样生效的

module:{ //我写一个module
    //配置一个rules(规则),rules是一个数组,里面包含一条一条的规则
    rules:[
        {
            // test 表示测试什么文件类型
            test:/\.css$/,
            // 使用 'style-loader','css-loader'
            loader:['style-loader','css-loader']
        }
    ]
},

同时还有第三种写法,css-loader一定要放在后面,因为是先用css-loader在插入到style标签里面

module:{ //我写一个module
    //配置一个rules(规则),rules是一个数组,里面包含一条一条的规则
    rules:[
        {
            // test 表示测试什么文件类型
            test:/\.css$/,
            // 使用 'style-loader','css-loader'
            use:[
                {loader:'style-loader'},
                {loader:'css-loader'}
            ]
        }
    ]
},

总结loader的三种写法

1.use:['xxx-loader','xxx-loader']
2.loader:['style-loader','css-loader']
3.use:[
        {loader:'style-loader'},
        {loader:'css-loader'}
   ]

一般简单的用第一种,涉及参数配置的用第三种


如何压缩js

打包完以后,JS需要压缩上线

1.在webpack4.x版本中

    --mode production 表示生产环境,只要配置在package.json的script里面 js自动就压缩了

2.之前版本是如何做到的

使用uglifyjs-webpack-plugin

如果我们希望通过插件的形式压缩,那么我需要

1.安装

cnpm i uglifyjs-webpack-plugin -D

2.引入插件

const Uglify = require('uglifyjs-webpack-plugin');

3.使用ugliufy()

new ugliufy()

-

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const Webpack = require('webpack');
//onst Uglify = require('uglifyjs-webpack-plugin');

module.exports = {
    entry:{
        entry: './src/index.js'
    }, 
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'[name]-bundle.js' 
    },
    module:{ //我写一个module
        //配置一个rules(规则),rules是一个数组,里面包含一条一条的规则
        rules:[
            {
                // test 表示测试什么文件类型
                test:/\.css$/,
                // 使用 'style-loader','css-loader'
                use:[
                    {loader:'style-loader'},
                    {loader:'css-loader'}
                ]
            }
        ]
    },
    devServer:{
        contentBase:path.resolve(__dirname,'dist'), //最好设置成绝对路径
        host:'localhost',
        port:8090,
        open:true,
        hot:true
    },
    plugins:[
        // Uglify是压缩js,现在已经不需要了,只需要在script里面写成
        // "build": "webpack --mode production", 就自动压缩了
        //new Uglify(),  
        new Webpack.HotModuleReplacementPlugin(),
        new HtmlWebpackPlugin({
            title:'Hello World',
            template: './src/index.html' //模板地址
        })
    ]
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,您的问题是如何使用webpack5从0搭建项目并配置开发环境和生产环境? 首先,需要安装webpackwebpack-cli: ``` npm install webpack webpack-cli --save-dev ``` 然后,我们需要创建三个配置文件:webpack.common.jswebpack.dev.jswebpack.prod.js。 在webpack.common.js中,我们将配置所有环境都需要的共同的部分。例如,我们可以配置entry、output、module和plugins等。示例代码如下: ```javascript const path = require('path'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { entry: './src/index.js', output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist'), publicPath: '/', }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: ['babel-loader', 'eslint-loader'], }, { test: /\.(sa|sc|c)ss$/, use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'], }, { test: /\.(png|svg|jpg|gif|ico)$/, use: [ { loader: 'url-loader', options: { limit: 8192, name: '[name].[contenthash:8].[ext]', outputPath: 'assets/images', }, }, ], }, { test: /\.(woff|woff2|eot|ttf|otf)$/, use: [ { loader: 'file-loader', options: { name: '[name].[contenthash:8].[ext]', outputPath: 'assets/fonts', }, }, ], }, ], }, plugins: [new CleanWebpackPlugin()], }; ``` 在webpack.dev.js中,我们将配置开发环境所需要的部分。例如,我们可以配置devServer、devtool等。示例代码如下: ```javascript const { merge } = require('webpack-merge'); const commonConfig = require('./webpack.common'); module.exports = merge(commonConfig, { mode: 'development', devtool: 'inline-source-map', devServer: { contentBase: './dist', port: 8080, hot: true, open: true, }, optimization: { minimize: false, }, }); ``` 在webpack.prod.js中,我们将配置生产环境所需要的部分。例如,我们可以配置optimization、devtool等。示例代码如下: ```javascript const { merge } = require('webpack-merge'); const commonConfig = require('./webpack.common'); const TerserPlugin = require('terser-webpack-plugin'); module.exports = merge(commonConfig, { mode: 'production', devtool: 'source-map', optimization: { minimize: true, minimizer: [new TerserPlugin()], }, }); ``` 最后,在package.json中配置三个命令: ```json { "scripts": { "serve": "webpack serve --config webpack.dev.js", "build": "webpack --config webpack.prod.js", "test": "echo \"Error: no test specified\" && exit 1" } } ``` 以上是一个基本的webpack5项目的配置过程,其中包含了babel、eslint、dev-server、css-loader、scss-loader、post-loaderstyle-loadercss压缩JS压缩,file-loader、url-loader、clean-webpack-plugin、js多进程打包等常用配置
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值