ตัวสร้างการตั้งค่า Webpack

webpack.config.js
ผลลัพธ์

การเขียน webpack.config.js จากความจำหมายถึงต้องจำรูปแบบที่แน่นอนของ output, regex test ของแต่ละ loader และวิธีเชื่อมต่อ plugin เครื่องมือนี้เปลี่ยนสิ่งนั้นให้เป็นแบบฟอร์มสั้นๆ ตั้งค่าไฟล์ entry, โฟลเดอร์ output และโหมด build จากนั้นเลือกส่วนที่คุณต้องการ ได้แก่ TypeScript, Babel, CSS loader, HtmlWebpackPlugin และ dev server แล้วมันจะเขียนการตั้งค่า webpack 5 ที่สะอาดและพร้อมคัดลอก โดยมีชื่อไฟล์ [contenthash] และ output.clean ใส่ไว้ให้แล้ว

วิธีสร้างการตั้งค่า webpack

  1. 1

    ตั้งค่า entry และ output

    พิมพ์ไฟล์ entry ของคุณ (ค่าเริ่มต้น `./src/index.js`) และโฟลเดอร์ output (ค่าเริ่มต้น `dist`)

  2. 2

    เลือกโหมด

    เลือก `production` หรือ `development` ค่าจะถูกเขียนลงในฟิลด์ `mode` โดยตรง

  3. 3

    เปิด loader และ plugin

    เปิดตามที่ต้องการ ได้แก่ TypeScript (`ts-loader`), Babel (`babel-loader`), CSS loader (`style-loader` + `css-loader`), `HtmlWebpackPlugin` และ dev server

  4. 4

    คัดลอกการตั้งค่า

    `webpack.config.js` อัปเดตแบบเรียลไทม์ ใช้ปุ่มคัดลอกแล้ววางลงในรากของโปรเจกต์

ผลลัพธ์เริ่มต้น

ด้วยค่าเริ่มต้น (โหมด production, TypeScript, Babel, CSS loader และ HtmlWebpackPlugin) เครื่องมือจะสร้าง:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.[contenthash].js',
    clean: true,
  },
  resolve: { extensions: ['.ts','.tsx','.js'] },
  module: {
    rules: [
      { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ },
      { test: /\.jsx?$/, exclude: /node_modules/, use: 'babel-loader' },
      { test: /\.css$/, use: ['style-loader', 'css-loader'] },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

แต่ละตัวเลือกเขียนอะไร

ตัวเลือก สิ่งที่เพิ่มลงในการตั้งค่า
entry ค่า entry เช่น entry: './src/index.js'
โฟลเดอร์ output output.path แก้ค่าด้วย path.resolve(__dirname, 'dist')
mode mode: 'production' หรือ mode: 'development'
TypeScript กฎ ts-loader สำหรับ .ts/.tsx และเพิ่มนามสกุลเหล่านั้นใน resolve
Babel กฎ babel-loader สำหรับ .js/.jsx
CSS loader กฎที่ต่อ style-loader และ css-loader สำหรับ .css
HtmlWebpackPlugin บรรทัด require และ new HtmlWebpackPlugin({ template: './src/index.html' })
dev server บล็อก devServer ที่ให้บริการโฟลเดอร์ output บนพอร์ต 3000 พร้อม hot reload

ตัวเลือกที่กำหนดตายตัวในผลลัพธ์

เพื่อให้การตั้งค่าเริ่มต้นกระชับ ค่าบางอย่างถูกตั้งไว้ให้แทนที่จะแสดงเป็นฟิลด์:

  • ชื่อไฟล์แบบ hash output.filename เป็น bundle.[contenthash].js เสมอ ซึ่งล้างแคชของเบราว์เซอร์ทุกครั้งที่ bundle เปลี่ยน
  • output ที่สะอาด output.clean: true จะล้างโฟลเดอร์ output ทุกครั้งที่ build ซึ่งเป็นตัวแทนของ clean-webpack-plugin ใน webpack 5
  • CSS ถูกรวมเข้าไปใน bundle ไม่ได้ถูกแยกออกมา style-loader แทรกสไตล์ผ่าน JavaScript หากต้องการสร้างไฟล์ .css แยกสำหรับ production ให้เพิ่ม MiniCssExtractPlugin เอง
  • พื้นฐานของ dev server เมื่อเปิดใช้งาน devServer จะตั้งค่า static, port: 3000 และ hot: true เพิ่มตัวเลือกอย่าง historyApiFallback หรือ proxy ด้วยตนเองหากแอปของคุณต้องการ

วิธีขยายเพิ่มเติม

ไฟล์ที่สร้างขึ้นเป็นจุดเริ่มต้น ไม่ใช่การตั้งค่า production ที่สมบูรณ์ ขั้นตอนถัดไปที่พบบ่อยซึ่งคุณเพิ่มเอง ได้แก่ MiniCssExtractPlugin สำหรับแยก CSS, sass-loader สำหรับ .scss, โมดูล asset ของ webpack 5 สำหรับรูปภาพและฟอนต์, ค่า devtool สำหรับ source map และบล็อก splitChunks สำหรับการแบ่งโค้ด

คำถามที่พบบ่อย

สำหรับ webpack 5 ผลลัพธ์ใช้ output.clean และชื่อไฟล์ [contenthash] ซึ่งเป็นแนวทางสมัยใหม่ของ webpack 5 จึงไม่จำเป็นต้องมี plugin สำหรับล้างเพิ่ม

ไม่ มันเขียนเป็น webpack.config.js แบบ JavaScript เสมอ การเปิด TypeScript จะเพิ่มกฎ ts-loader เพื่อให้ webpack คอมไพล์ซอร์ส .ts/.tsx ของคุณ ไม่ได้เปลี่ยนรูปแบบของไฟล์การตั้งค่าเอง

บล็อก devServer ที่สร้างขึ้นใช้พอร์ต 3000 พร้อม hot reload เปลี่ยนค่า port ในไฟล์ที่คัดลอกหากต้องการพอร์ตอื่น

ได้ แต่ละตัวเลือกเพิ่มกฎของตัวเอง (ts-loader สำหรับ .tsx?, babel-loader สำหรับ .jsx?) จึงเปิดอย่างใดอย่างหนึ่งหรือทั้งสองอย่างได้ ขึ้นอยู่กับวิธีที่โปรเจกต์ของคุณทำ transpile

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสุ่มที่อยู่

สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ

ตัวตรวจสอบความถูกต้องของ JSON

ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น