Webpack 5の新しい特性
6296 ワード
このリリースでは、次の点に焦点を当てます.永続キャッシュにより構築性能を向上する. .より良いアルゴリズムとデフォルト値を使用して長期キャッシュを改善する. より良い木揺れとコード生成によりバンドルパッケージのサイズを改善する. は、重大な変更を導入することなく、v 4で機能を実現するとともに、奇妙な状態にある内部構造を消去する. .は、v 5. をできるだけ長く使用できるように、重大な変更を導入することによって、将来の機能に備える.
ダウンロード npm i webpack@next webpack-cli -D
Node.js Polyfillsの自動削除
初期、webpackの目標はブラウザで多くのnode.jsモジュールを実行することを許可することだったが、モジュール構造が変化し、多くのモジュールの用途は現在、主にフロントエンドの目的のために作成されている.Webpack<=4にはnode.jsコアモジュールのpolyfillが多数付属しており、モジュールがコアモジュール(cryptoモジュール)を使用すると自動的に適用されます.
これによりnode.js用に作成されたモジュールが容易になりますが、これらの巨大なpolyfillがパッケージに追加されます.多くの場合、これらのpolyfillは必要ありません.
Webpack 5は、これらのコアモジュールの充填を自動的に停止し、フロントエンドと互換性のあるモジュールに集中します.
移行:フロントエンドと互換性のあるモジュールの使用を可能な限り試みます. node.jsコアモジュールにpolyfillを手動で追加できます.エラーメッセージは、ターゲットの実装方法を示します.
ChunkとモジュールID
長期キャッシュに使用する新しいアルゴリズムが追加されました.これらの機能は、本番モードでは既定でオンになっています.
Chunk ID
Webpack内部にはchunkネーミングルールがあり、id(0,1,2)ネーミングではありません
Tree Shaking webpackは、ネストモジュールに対するtree shaking を処理できるようになった.
生産環境では、innerモジュールが露出した webpackは現在、複数のモジュールの前の関係 を可能にする. webpackは、Commonjsに対するtree shaking を処理できるようになりました.
Output
Webpack 4はデフォルトでES 5コードしか出力できません
Webpack 5は、ES 5およびES 6/ES 2015コードを生成できる属性output.ecmaVersionの追加を開始する.
例えば:
Caching
キャッシュは
出力ファイルの監視
以前はwebpackは常に最初の構築時にすべてのファイルを出力していましたが、再構築を監視すると変更したファイルのみが更新されます.
今回の更新では、初回構築時に出力ファイルが変化しているかどうかを確認し、すべてのファイルを出力するかどうかを決定します.
デフォルト
ダウンロード
Node.js Polyfillsの自動削除
初期、webpackの目標はブラウザで多くのnode.jsモジュールを実行することを許可することだったが、モジュール構造が変化し、多くのモジュールの用途は現在、主にフロントエンドの目的のために作成されている.Webpack<=4にはnode.jsコアモジュールのpolyfillが多数付属しており、モジュールがコアモジュール(cryptoモジュール)を使用すると自動的に適用されます.
これによりnode.js用に作成されたモジュールが容易になりますが、これらの巨大なpolyfillがパッケージに追加されます.多くの場合、これらのpolyfillは必要ありません.
Webpack 5は、これらのコアモジュールの充填を自動的に停止し、フロントエンドと互換性のあるモジュールに集中します.
移行:
ChunkとモジュールID
長期キャッシュに使用する新しいアルゴリズムが追加されました.これらの機能は、本番モードでは既定でオンになっています.
chunkIds: "deterministic", moduleIds: "deterministic"
Chunk ID
import(/* webpackChunkName: "name" */ "module")
を使用して開発環境にchunkの名前を付ける必要はありません.生産環境は必要です.Webpack内部にはchunkネーミングルールがあり、id(0,1,2)ネーミングではありません
Tree Shaking
// inner.js
export const a = 1;
export const b = 2;
// module.js
import * as inner from './inner';
export {
inner };
// user.js
import * as module from './module';
console.log(module.inner.a);
生産環境では、innerモジュールが露出した
b
が削除されます.import {
something } from './something';
function usingSomething() {
return something;
}
export function test() {
return usingSomething();
}
"sideEffects": false
が設定されている場合、test
メソッドが使用されていないことが発見されると、test
だけでなく、"./something"
も削除されるOutput
Webpack 4はデフォルトでES 5コードしか出力できません
Webpack 5は、ES 5およびES 6/ES 2015コードを生成できる属性output.ecmaVersionの追加を開始する.
例えば:
output.ecmaVersion: 2015
SplitChunk // webpack4
minSize: 30000;
// webpack5
minSize: {
javascript: 30000,
style: 50000,
}
Caching
//
cache: {
//
type: "filesystem",
buildDependencies: {
// ,
config: [__filename]
}
}
キャッシュは
node_modules/.cache/webpack
に格納されます出力ファイルの監視
以前はwebpackは常に最初の構築時にすべてのファイルを出力していましたが、再構築を監視すると変更したファイルのみが更新されます.
今回の更新では、初回構築時に出力ファイルが変化しているかどうかを確認し、すべてのファイルを出力するかどうかを決定します.
デフォルト
entry: "./src/index.js
output.path: path.resolve(__dirname, "dist")
output.filename: "[name].js"