<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      webpack4之后webpack5又做了蠻多的變化,這里簡單介紹一下webpack5的配置 可以參考官網(wǎng)

      mkdir react-cli
      cd react-cli
      npm init 初始化package.json
      npm install webpack webpack-cli --save-dev
      現(xiàn)在我們將創(chuàng)建以下目錄結(jié)構(gòu)、文件和內(nèi)容:
      //index.js
      import './index.css' function component() { const element = document.createElement('div'); // lodash(目前通過一個 script 引入)對于執(zhí)行這一行是必需的 element.innerHTML = "<div class='demo'>322222是www一個demo332222222222dddd</div>"; return element; } document.body.appendChild(component());

       下面介紹一下package.json

      "scripts": {
          "dev": "webpack server --config scripts/dev.js",
          "build": "webpack --config scripts/build.js",
          "server": "serve ./build -p 5000"
        }, 

      然后介紹一下dev.js,我這里使用merga合并兩個配置

         process.env.NODE_ENV = 'development';
      const path=require('path');
      const common = require('../webpack.config.js');
      const { merge } =require('webpack-merge');
      const webpack =require('webpack');
      const webpackDevServer = require('webpack-dev-server');
      const isDev = process.env.NODE_ENV === 'development';
      const publicPath = !isDev ? './' : (isDev && '/');
      
      module.exports= merge(common,{
        mode: 'development',
        devtool: 'inline-source-map',
        devServer:{
          static: {
            directory: path.join(__dirname, '../dist'),
          },
          compress: true,
          open: true,
          devMiddleware: {
            publicPath: '/',
          },
        }
      })  
      然后看一下webpack.config.js文件
      const path = require('path');
      const HtmlWebpackPlugin = require('html-webpack-plugin');
      const isDev = process.env.NODE_ENV === 'development';
      const resolve =(pathName) => path.resolve(__dirname,pathName);
      const publicPath = !isDev ? './' : (isDev && '/');
      module.exports = {
        mode: isDev ? 'development' : 'production',
        entry: path.resolve(__dirname, './src/index.js'),
        output: {
          path: path.join(__dirname, !isDev ? './build' : './dist'),
          filename: !isDev ? 'js/[name].[contenthash:8].js' : 'js/[name].js',
          chunkFilename: !isDev ? 'js/[name].[contenthash:8].chunk.js' : 'js/[name].chunk.js',
          publicPath
        },
        module: {
          rules: [
            {
              test: /\.(js|jsx|ts|tsx)?$/,
              use: [
                {
                  loader: 'babel-loader'
                },
              ],
            },
            {
              test: /\.css$/i,
              use: ['style-loader', 'css-loader']
            },
            {
              test: /\.(png|jpe?g|gif|webp|bmp|woff2?|eot|ttf|otf)$/,
              type: 'asset',
              parser: {
                dataUrlCondition: {
                  maxSize: 4 * 1024 // 默認配置是8kB
                }
              }
            },
          ]
        },
        plugins: [
          new HtmlWebpackPlugin({
            template:resolve('./index.html'),
            inject: true,
          })
        ],
        resolve: {
          extensions: ['.json', '.js', '.jsx', '.ts', '.tsx'],
          alias: {
            '@': resolve('../src'),
          }
        },
        optimization: {
          splitChunks: {
            chunks: 'all',
          }
        }
      }
      最后看一下build.js
          process.env.NODE_ENV = 'production';
      const path=require('path');
      const common = require('../webpack.config.js');
      const { merge } =require('webpack-merge');
      
      module.exports = merge(common,{
        mode: 'production',
        devtool: false,
      })
      以上只是webpack5簡單的配置,代碼壓縮后面在介紹
       官網(wǎng)上還有一種通過Node.js api的方式進行配置
      const path = require('path');
      const common = require('../webpack.config.js');
      const { merge } = require('webpack-merge');
      const webpack = require('webpack');
      const webpackDevServer = require('webpack-dev-server');
      const isDev = process.env.NODE_ENV === 'development';
      
      async function initDevServer() {
        const options = {
          static: {
            directory: path.join(__dirname, '../dist'),
          },
          devMiddleware: {
            publicPath: '/',
            writeToDisk: false,
          },
          open: true,
          allowedHosts: 'all'
        }
      
        common.mode = "development"
      
        const compiler = webpack(common);
      
        const devServer = new webpackDevServer(options, compiler);
      
        (async () => {
          await devServer.start();
      
          console.log(`Dev server started \n`);
        })();
      }
      
      initDevServer();
      
      
      //"dev": "node scripts/dev.js",
      

        

      posted on 2022-10-07 10:01  執(zhí)候  閱讀(79)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中国产无码一区二区三区| 亚洲国产理论片在线播放| 久久国产精品二国产人妻| 日本A级视频在线播放| 狠狠色噜噜狠狠狠狠2021| 色吊丝一区二区中文字幕| 中文字幕结果国产精品| 国产亚洲精品97在线视频一| 国产区一区二区现看视频| 国产一区二区不卡在线| 性男女做视频观看网站| 亚洲av无码精品色午夜蛋壳| 国产97色在线 | 免| 囯产精品久久久久久久久久妞妞| 国产午夜福利视频一区二区| 我要看亚洲黄色太黄一级黄| 99er热精品视频| 国产成人亚洲欧美二区综合| 好男人官网资源在线观看| 国产亚洲精品岁国产精品| 中国女人熟毛茸茸A毛片| 国产玖玖玖玖精品电影| 人妻体体内射精一区二区| 国产精品三级中文字幕| 国产mv在线天堂mv免费观看| 一区二区三区四区五区自拍| 亚洲日韩成人av无码网站| 精品久久精品久久精品久久| 会泽县| 国产av一区二区三区精品| 石柱| 无套内谢极品少妇视频| 欧美喷潮最猛视频| 国产精品爆乳在线播放第一人称| 亚洲国产码专区在线观看| 成人3d动漫一区二区三区| 一本色道婷婷久久欧美| 久久亚洲中文字幕不卡一二区| 国产自产一区二区三区视频| 狠狠躁夜夜躁人人爽天天5| 少妇人妻偷人免费观看|