ฉันรู้ว่านี่เป็นโพสต์เก่า แต่คิดว่ามันจะมีประโยชน์หากพูดถึงว่าตัวโหลดสคริปต์ของ webpack อาจมีประโยชน์ในกรณีนี้เช่นกัน จากเอกสาร webpack:
"script: เรียกใช้ไฟล์ JavaScript หนึ่งครั้งในบริบทส่วนกลาง (เช่นในแท็กสคริปต์) ความต้องการจะไม่ถูกแยกวิเคราะห์"
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
ฉันพบว่าสิ่งนี้มีประโยชน์อย่างยิ่งเมื่อย้ายกระบวนการสร้างรุ่นเก่าที่เชื่อมไฟล์ผู้ขาย JS และไฟล์แอปเข้าด้วยกัน คำเตือนคือดูเหมือนว่าตัวโหลดสคริปต์จะทำงานผ่านการโอเวอร์โหลดเท่านั้นrequire()
และไม่ทำงานเท่าที่ฉันสามารถบอกได้โดยระบุไว้ในไฟล์ webpack.config แม้ว่าหลายคนโต้แย้งว่าการใช้งานมากเกินไปrequire
เป็นแนวทางปฏิบัติที่ไม่ดี แต่ก็มีประโยชน์มากสำหรับการรวมผู้ขายและสคริปต์แอปไว้ในชุดเดียวและในขณะเดียวกันก็เปิดเผย JS Globals ที่ไม่จำเป็นต้องแยกเป็นชุด webpack เพิ่มเติม ตัวอย่างเช่น:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
สิ่งนี้จะทำให้ $ .cookie, ประวัติและช่วงเวลาพร้อมใช้งานทั่วโลกทั้งภายในและภายนอกของบันเดิลนี้และรวม libs ของผู้ให้บริการเหล่านี้ด้วยสคริปต์ main.js และทั้งหมดเป็นrequire
ไฟล์ d
นอกจากนี้เทคนิคนี้ยังมีประโยชน์คือ:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
ซึ่งใช้ Bower จะดูmain
ไฟล์ในแต่ละrequire
d libraries package.json ในตัวอย่างข้างต้น History.js ไม่มีmain
ไฟล์ที่ระบุดังนั้นจึงจำเป็นต้องใช้พา ธ ไปยังไฟล์
new
ก่อนwebpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html