フロントエンドとモバイル開発---- webpack ----プラグイン

webpack

目的:

  • プロジェクトから別のファイルにcssを抽出する機能
  • 構成を使用して、パッケージ化されたリソースをhtmlに自動的にインポートできます
  • clean-webpack-pluginを使用してパッケージディレクトリを空にすることができます
  • cssコードとjsコードの圧縮最適化を行うことができます

プラグインはwebpackの機能を拡張するために使用されます。さまざまなプラグインにより、webpackは構築に関連するほとんどすべてのことを実行できます。

例えば:

  • cssを別のファイルに抽出します
  • パッケージディレクトリを空にします
  • index.htmlをターゲットフォルダに自動的にコピーします

プラグインの構成は非常に簡単です。プラグイン構成アイテムは配列を受け取ります。配列内の各アイテムは、使用されるプラグインのインスタンスです。プラグインに必要なパラメーターは、コンストラクターを介して渡されます。

プラグインを使用することの難しさは、プラグインをwebpackに導入する方法ではなく、プラグイン自体の構成項目にあります。webpackが直接実現できないほとんどすべての機能は、オープンソースプラグインで解決できます。私たちのニーズ対応するプラグインを見つけてください。

フォーマット:

module.exports = {
   entry: 
   output:,
   module:,
   plugins:[] // 设置plugin
}

mini-css-extract-plugin

機能:このプラグインは、cssコードを別のファイルに抽出するのに役立ちます(スタイルでhtmlファイルに埋め込むのではありません)。

npm公式ウェブサイト:https://www.npmjs.com/package/mini-css-extract-plugin

使用する:

  • ダウンロードとインストール
  • webpack.config.jsを構成します
  • webpackを実行してパッケージ化し、効果を確認します

ダウンロードとインストール

これは開発の依存関係です。

npm install mini-css-extract-plugin -D 
--------------------------------------
+ [email protected]
added 7 packages from 3 contributors in 10.363s

構成

webpack.config.jsで、次の3つの場所を変更します。

  • プラグインを導入する
  • より少ないローダーリストにローダーを追加する
  • プラグインにmini-css-extract-pluginを追加します

次のように:

// node 中的核心模块
const path = require('path')

const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
    
    
  //
  {
    
    
        test: /\.less$/,  // 如果这个模块以less结尾
        // 如果在打包的过程遇到了.less,则:从右向左
        // 1. 先用less-loader 读出内容,转成css
        // 2. 用css-loader 读出内容
        // 3. 用postcss-loader 配合autoprefixer这个工具给需要前缀的样式添加前缀
        // 4. style-loader把读出的内容以style标签的格式
        // 附加在.html文件上
        // use: ['style-loader','css-loader', 'postcss-loader', 'less-loader'] // 设置要处理的loader
        use: [
          {
    
    
            loader: MiniCssExtractPlugin.loader,
            options:{
    
    publicPath: '../'}
          },
          'css-loader', 'postcss-loader', 'less-loader'
        ] // 设置要处理的loader
      },
        
  // ... 
  plugins:[
    new MiniCssExtractPlugin({
    
    
      filename:'css/[name].css'
    })
  ]
}

試してみる。

ここに画像の説明を挿入

この時点でcssは別のファイルに配置されているため、index.htmlにスタイルを導入する場合は、cssへの参照を手動で追加する必要があります。

html-webpack-plugin

問題:

cssを手動でインポートする必要があり、index.htmlをソースフォルダーからターゲットフォルダーに手動でコピーする必要があります...

どちらもhtml-webpack-pluginで解決できます。

機能:指定したパッケージエクスポートディレクトリに書き込んだ.htmlファイルをコピーし、関連するリソースコード自動的に導入します

キャッシュされた外部ファイルを参照する問題を防ぐために、各コンパイル後に、スクリプトやリンクなどのhtmlファイルで導入された外部リソースにハッシュを動的に追加します。HTMLエントリファイルを生成および作成できます。

公式ウェブサイト:https://www.npmjs.com/package/html-webpack-plugin

実装手順:

ダウンロードとインストール

npm i html-webpack-plugin -D
------------------------------------
+ [email protected]
added 63 packages from 130 contributors in 42.462s

構成

webpack.config.jsで、次の2つのことを行います。

  1. プラグインを導入する
const HtmlWebpackPlugin = require('html-webpack-plugin');
  1. srcの下のindex.htmlをpulbic / index.htmlに移動します
  2. プラグイン構成を追加する
// node 中的核心模块
const path = require('path')
// console.log( path.resolve('./src/index.html')  )

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    
    
	// ...
  plugins:[
    new MiniCssExtractPlugin({
    
    
      filename:'css/[name].css'
    }),
    new HtmlWebpackPlugin({
    
    
      minify: {
    
     // 压缩HTML文件
        removeComments: true, // 移除HTML中的注释
        collapseWhitespace: true, // 删除空白符与换行符
        minifyCSS: true// 压缩内联css
      },
      filename: 'index.html',
      // path.resolve()就是转成绝对路径
      template: path.resolve('./public/index.html') // 指定模块的位置
    })
  ]
}
  1. パッケージテスト

    • テンプレートで指定された.htmlファイルをエクスポートフォルダにコピー(圧縮)します
    • パッケージ化された.cssおよび.jsコードも自動的に添付されます

回路図:

ここに画像の説明を挿入

clean-webpack-plugin

パッケージファイルを生成する前に、エクスポートディレクトリをクリアしてください。

インストール

npm i clean-webpack-plugin -D

構成ファイルwebpack.config.jsを変更します

  1. 導入する:

    const {
          
           CleanWebpackPlugin } = require('clean-webpack-plugin')
    
  2. プラグインを追加する

plugins:[
        new CleanWebpackPlugin(),
        其它...
]

再度パッケージ化するときに、権限がないことを示すプロンプトが表示された場合は、最初にエクスポートフォルダーを削除するのに役立ちます。

Error: EPERM: operation not permitted, lstat 'D:\webpack-learn\02-code\webpack-dev-111\build\css\main.css'
    at Object.lstatSync (fs.js:1033:3)

あなたが試すことができます:

  • vscodeのターミナルでpackagesコマンドを実行します
  • アップルこれ:sudo npx webpack
  • ウィンドウ:PowerShellを開くとき、ここに画像の説明を挿入

コード圧縮の最適化

梱包方法をに設定することを忘れないでください生产模式:mode: 'production'

  • cssを圧縮します

    1. プラグインをインストールする
    npm i -D optimize-css-assets-webpack-plugin
    
    1. プラグインを構成する

      const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
      
      module.exports= {
              
              
      	optimization: {
              
              
          minimizer: [
            new OptimizeCssAssetsWebpackPlugin()
            ]
      	}
      }
      
      
  • jsコードのconsole.logを削除します

const TerserWebpackPlugin = require('terser-webpack-plugin')

module.exports = {
    
    
   // ...
+  optimization: {
    
    
    minimizer: [
      // new OptimizeCssAssetsWebpackPlugin(),
      new TerserWebpackPlugin({
    
    
        parallel: 4,
        extractComments: true,
        terserOptions: {
    
    
          compress: {
    
    
            warnings: false,
            drop_console: true,
            drop_debugger: true
          }
        }
      })
    ]
  },
}

概要

プラグインは、webpackの機能を向上させるために使用されます。

ステップ:

  1. ダウンロードとインストール
  2. webpack.config.jsを構成します
    1. 導入する
    2. プラグイン設定を追加する

欠点がある場合
は、継続するようにアドバイスしてください。更新を続けてください
一緒に進歩しましょう!

おすすめ

転載: blog.csdn.net/qq_40440961/article/details/112954618