ทุกครั้งที่ฉันพยายามเรียนรู้เกี่ยวกับสคริปต์บิลด์ บันเดิลหรือ doohickeys จาวาสคริปต์อื่นๆ ฉันประสบปัญหาในการค้นหาบทช่วยสอนที่ไม่ต้องการให้ฉันตั้งค่าทุกอย่าง

เมื่อคุณกำลังเรียนรู้ คุณไม่จำเป็นต้องตั้งค่าแอป React/Redux ด้วยการทดสอบ Sass และ Flow และ Jest บางครั้งคุณเพียงต้องการทำสิ่งหนึ่งสิ่งใดในแต่ละครั้ง

บทช่วยสอนนี้เกี่ยวกับการตั้งค่าโครงการ Webpack และเราจะดำเนินการให้น้อยที่สุดเท่านั้น

Webpack เป็นตัวรวม Javascript, HTML, CSS, Sass, JSX หรือไฟล์อื่นๆ ทั้งหมดของคุณจะถูกรวมเป็นไฟล์หนึ่งหรือสองไฟล์

นอกเหนือจากการให้คุณใช้เทคโนโลยีเช่น "Sass" หรือ "React" แล้ว Webpack ยังช่วยให้คุณแบ่งไฟล์ของคุณได้อย่างง่ายดาย และใช้ไวยากรณ์ของโมดูล ES6 เช่น:

import myThing from './myThing.js'

การติดตั้ง

หากต้องการติดตั้ง Webpack เพียงเรียกใช้:

npm install webpack -g

ไฟล์กำหนดค่า

แค่มี Webpack เท่านั้นยังไม่พอ ในโปรเจ็กต์ของคุณ คุณจะต้องมีไฟล์ webpack.config.js นี่คือที่ที่คุณอธิบายให้ webpack ทราบว่าคุณต้องการทำอะไร

ฉันเริ่มต้นด้วยโครงสร้างไฟล์ที่มีลักษณะดังนี้:

เริ่มต้นด้วยตัวอย่างง่ายๆ อย่างไม่น่าเชื่อ:

module.exports = {
  entry: './src/app.js', // This tells webpack where to start
  output: {
    filename: './build/bundle.js' // This tells webpack the output
  }
};

ในกรณีที่คุณไม่เคยเห็นไวยากรณ์ module.exports มาก่อน คุณควรตรวจสอบเอกสารประกอบของโมดูลสำหรับโหนด:



มาลองดูกัน!

ลองเรียกใช้ $ webpack ในบรรทัดคำสั่งในโฟลเดอร์โครงการของคุณ (โปรดทราบว่าฉันใช้ $ เพื่อระบุว่าควรเรียกใช้จากบรรทัดคำสั่ง ไม่รวม $ ไว้ในคำสั่งของคุณ) คุณจะเห็นสิ่งที่ต้องการ:

คุณควรสังเกตว่า webpack สร้างโฟลเดอร์ build สำหรับเราโดยมีไฟล์ bundle.js อยู่ข้างใน ในขณะนี้ คุณไม่จำเป็นต้องกังวลกับโค้ดที่โค้ดสร้างขึ้นสำหรับคุณ

มาทำอะไรสักอย่างกันเถอะ

สร้างไฟล์ใหม่ชื่อ hello.js ในโฟลเดอร์เดียวกับ app.js ของคุณ

ในไฟล์นั้น มากำหนดฟังก์ชันแล้วส่งออก

// src/hello.js
function myFunction() {
  console.log("Hello Webpack!")
}
module.exports = myFunction

จากนั้นใน app.js ของคุณ ให้ใช้ require ฟังก์ชันนั้นแล้วเรียกมันว่า

// src/app.js
var myFunction = require('./hello.js')
myFunction();

ถ้าเรารัน $ webpack ตอนนี้ เราควรจะเห็นโค้ดของเราปะติดปะต่อกับสิ่งต่างๆ มากมายที่เราไม่ได้เขียน

ตอนนี้สำหรับ HTML บางส่วน

แม้ว่าส่วนต่อไปนี้จะไม่ใช่แนวทางปฏิบัติที่ดีที่สุด (เราจะมาดูวิธีดำเนินการอย่างถูกต้องอีกครั้ง) มาสร้างไฟล์ index.html ในโฟลเดอร์ build กันดีกว่า

ภายในไฟล์นั้น ให้รวมสคริปต์ของเราไว้ในบรรทัดเดียว

<!-- build/index.html -->
<script src="bundle.js"></script> 

ในตัวฉัน ฉันรวมเฉพาะแท็กสคริปต์เท่านั้น เบราว์เซอร์ส่วนใหญ่จะรวมแท็ก html และ body อื่นๆ ทั้งหมดไว้ให้คุณด้วย ดังนั้น เมื่อเล่นแบบนี้ เราไม่จำเป็นต้องกังวลเกี่ยวกับแท็กเหล่านั้น

หากคุณเปิดไฟล์นั้นใน Chrome และเปิดเครื่องมือ dev ด้วย cmd-opt-i บน Mac หรือ ctrl-shift-i บน Windows คุณจะเห็นเอาต์พุต console.log ของเราในคอนโซล!

มีปัญหา? รหัสทั้งหมดที่ฉันใช้มีอยู่ใน "บน Github"