บันเดิลสคริปต์ที่มีแฮชในเลย์เอาต์ใน Webpack

โดยทั่วไปเมื่อทำการ build โปรเจค เรา ต้องการให้ชื่อของบันเดิลมี แฮช เราต้องการสิ่งนี้เพื่อ แก้ไขปัญหาการแคชไฟล์ โดยเบราว์เซอร์

ดังนั้นจึงสะดวกที่ Webpack จะ เชื่อมต่อบันเดิลที่มีชื่อ ซึ่งมีแฮชโดยอัตโนมัติ มาลองทดสอบกัน สมมติว่าการตั้งค่าของเรามีดังนี้:

webpack.config.jsexport default {
  context: path.resolve( 'src'),
  entry: {
    test1: './test1.js',
    test2: './test2.js'
  },
  output: {
    filename: '[name].[contenthash].js',
    path: path.resolve('dist'),
  },
  plugins: [
    new HtmlWebpackPlugin(),
  ],
};

หลังจากการ build ไฟล์เลย์เอาต์จะ ถูกเชื่อมต่อกับบันเดิลของเราที่มีแฮช:

dist/index.html<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Webpack App</title>
    <script defer src="test1.4173b379c6d6ff439604.js"></script>
    <script defer src="test2.72be8754d7c4cb0ece00.js"></script>
  </head>
  <body>
    
  </body>
</html>

ในขณะเดียวกัน เมื่อไฟล์โปรเจคมีการเปลี่ยนแปลง และทำการ build ใหม่ Webpack จะ เปลี่ยนแฮชและปรับเปลี่ยน ไฟล์เลย์เอาต์โดยอัตโนมัติ หากไฟล์โปรเจค ไม่มีการเปลี่ยนแปลง แฮชก็จะไม่ เปลี่ยนแปลงเช่นกัน

Задание 1

สร้างจุดเข้า (entry) สามจุด จัดการ ให้พวกมันถูก build เป็นบันเดิลแยกกัน โดยมีชื่อที่มีแฮช

Задание 2

ทำการ build โปรเจค ตรวจสอบให้แน่ใจ ว่าในไฟล์เลย์เอาต์ได้เชื่อมต่อบันเดิล ทั้งหมดแล้ว

Задание 3

เปลี่ยนข้อความในไฟล์ต้นทางของหนึ่ง ในจุดเข้า ทำการ build ตรวจสอบว่าแฮชของบันเดิลจาก จุดเข้านั้นเปลี่ยนไป ในขณะที่บันเดิลอื่น ๆ ไม่เปลี่ยนแปลง