最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Webpack入门配置总结

    正文概述 掘金(pfzzz)   2020-12-19   428

    前言

    我的配置版本号如下:

     "devDependencies": {
        "css-loader": "^3.2.0",
        "dart-sass": "^1.23.7",
        "file-loader": "^5.0.2",
        "html-webpack-plugin": "^3.2.0",
        "less": "^3.10.3",
        "less-loader": "^5.0.0",
        "mini-css-extract-plugin": "^0.8.0",
        "sass-loader": "^8.0.0",
        "style-loader": "^1.0.1",
        "webpack": "^4.41.2",
        "webpack-cli": "^3.3.10",
        "webpack-dev-server": "^3.9.0"
      },
    

    package.json中配置build

      "scripts": {
        "build": "rm -rf dist && webpack"
      },
    

    初始化 webpack.config.js

    模式的区别:

    module.exports = {
      mode: 'development'  // 开发者模式  注意去观察 dist/main.js  会发现有许多注释并没有被压缩
    };
    
    module.exports = {
      mode: 'production'  // 生产模式  去观察 dist/main.js  代码都被压缩了,
    };  
    

    入口文件和出口文件配置:

    var path = require('path');
    
    module.exports = {
      mode: 'development',   // 开发者模式
      entry: './src/index.js',  // 打包的入口文件
      output: {
        path: path.resolve(__dirname, 'dist'),  // 可用不用写,默认是dist文件
           filename: 'index.[contenthash].js'  // 打包出口文件名, 以 index.20位随机数/字母.js以文件名
    
      }
    };
    

    webpack插件自动生成HTML:

    这样就会在 dist文件中生成一个 index.html

    npm install --save-dev html-webpack-plugin
    
    var HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      plugins: [new HtmlWebpackPlugin()]  
    };
    

    配置内容:

     plugins: [new HtmlWebpackPlugin({ 
        // 可以不写filename这个属性,也默认生成index.html
        // 在这里配置title 要在template中的html文件内的title标签配置 <%= htmlWebpackPlugin.options.title %>
        title: 'Wang-pf',
        template: 'src/assets/index.html' // 生成模板是哪个
      })]
    

    webpack引入CSS:

    方法一: 用JS来生成style

    先安装依赖插件, 必须要安装style-loader 。

    npm install --save-dev  style-loader css-loader 
    

    原理是 webpack默认要把 以.css结尾的放到style标签中。

     module: {
        rules: [{
          test: /\.css$/i, // 以 .css 结尾的
          use: ["style-loader", "css-loader"], // 依赖插件
        
       }, ],
      }
    

    方法二: 把CSS抽成文件

    先安装依赖,

    npm install --save-dev mini-css-extract-plugin
    

    配置

    const MiniCssExtractPlugin = require('mini-css-extract-plugin');
    
    module.exports = {
      plugins: [
         new MiniCssExtractPlugin({
          // 类似于 webpackOptions.output 中的选项
          // 所有选项都是可选的
          filename: '[name].[contenthash].css',
          chunkFilename: '[id].[contenthash].css',
          ignoreOrder: false, // 忽略有关顺序冲突的警告
        }),
      ],
      module: {
        rules: [
          {
            test: /\.css$/,
           use: [{
              loader: MiniCssExtractPlugin.loader,
              options: {
                // 你可以在这里指定特定的 publicPath
                // 默认情况下使用 webpackOptions.output 中的 publicPath
                publicPath: '../',
              },
            },
            'css-loader',
          ],
          },
        ],
      },
    };
    
    

    webpack dev-server 的使用

    1. 安装插件
    npm install --save-dev webpack-dev-server
    
    1. webpack.config.js 配置
      devServer: {
      	contentBase: './dist'
      },
    
    1. 在package.json 配置以下 start
     "start": "webpack-dev-server --open",
    

    在 npm start 的时候发现 报错, 报错原因是:Error: Cannot find module 'webpack-cli/bin/config-yargs'

    解决方法是:把版本号改一下 如下:

    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.9.0"
    

    不同模式使用不同的 webpack config

    创建一个webpack配置文件:webpack.config.prod.js 用在生产模式时使用。

    创建一个webpack配置文件: webpack.config.base.js 用于开发和生产模式的共同属性

    并在package.json文件中重新配置build。

     "build": "rm -rf dist && webpack --config webpack.config.prod.js"
    

    webpack loader 和 webpack plugin 的区别

    • loader (加载器) : 用于加载某些文件,比如加载JS文件,可以把JS转换为低版本支持的js, 又比如CSS,使用相应的loder加载,可以把CSS放到页面上style标签中或者其他处理。也可以用来加载图片,可以对图片进行优化。
    • plugin (插件): 扩展webpack功能的,比如使用 HtmlWebpackPlugin 插件用来生成html文件, 使用 miniCssExtractPlugin 插件用来生成CSS文件等。

    引入 sass

    这里使用 datr-sass 不使用node-sass(已过时)

    npm install sass-loader dart-sass --save-dev
    

    webpakc.config配置:

     rules: [{
          test: /\.scss$/i,
          use: [
            "style-loader",
            "css-loader",
            {
              loader: "sass-loader",
              options: {
                // `dart-sass` 是首选
                implementation: require("dart-sass"),
              },
            },
          ],
     }, ],
    

    把css文件改为scss文件即可使用。

    引入less

    安装loader

    npm install less less-loader --save-dev
    
      {
          test: /\.less$/,
          loader: ["style-loader","css-loader","less-loader"], // compiles Less to CSS
        },
    

    stylus 和 引入less 方法一致,不再写了。

    使用 file-loader 引入图片

    安装

     npm install file-loader --save-dev
    

    我的版本号:

    "file-loader": "^5.0.2",
    

    webpack.config配置:

    module.exports = {
      module: {
        rules: [
          {
            test: /\.(png|jpe?g|gif)$/i,
            use: [
              {
                loader: 'file-loader',
              },
            ],
          },
        ],
      },
    };
    

    然后在html页面中引入就可以了。

    webpack impor() 懒加载

    不多说看代码

    inedx.js

    // index.js
    const btn = document.createElement('button')
    btn.innerText = '懒加载'
    btn.onclick = ()=>{
     const promise = import('./lazy.js')
      promise.then((module)=>{
        const fn = module.default
        fn()
      },()=>{
        console.log('懒加载模块加载失败')
      })
    }
    
    div.appendChild(btn)
    

    lazy.js

    export  default function lazy() {
      console.log('我是懒加载陌客')
    }
    

    上面就是如何使用 import() 来实现懒加载

    用 import() 去加载文件 ,然后得到一个 promise , 在成功之后 使用 module.default() 调用 lazy.js 文件


    起源地下载网 » Webpack入门配置总结

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元