node.js - Rollup: มองข้ามโมดูลทั้งหมด
ฉันกำลังพยายามสร้างไลบรารีที่สามารถทำงานได้ทั้งบนเบราว์เซอร์และ Node.js โดยมีความแตกต่างเล็กน้อย ตัวอย่างเช่น การร้องขอควรทำโดยใช้ XMLHttpRequest ที่มีอยู่ในเบราว์เซอร์ และใช้ request-promise บน Node ดังนั้นฉันต้องการให้ rollup ละเว้นโดยสมบูรณ์ ทุกคำสั่ง import ของ request-promise เพราะการตรวจสอบจะทำในไลบรารีของฉันขึ้นอยู่กับสภาพแวดล้อม (เบราว์เซอร์หรือ node) เพื่อสลับจากพฤติกรรมหนึ่งไปยังอีกพฤติกรรมหนึ่ง
ฉันได้ลองหลายวิธีแล้ว:
module.exports = {
external: ['request-promise'],
}
// OR
const ignore = require( 'rollup-plugin-ignore' );
module.exports = {
plugins: [
ignore('request-promise'),
],
}
// OR
const hypothetical = require( 'rollup-plugin-hypothetical' );
module.exports = {
hypothetical({
files: {
'./node_modules/request-promise/lib/rp.js': `export default null;`
},
allowFallthrough: true,
}),
}
ไม่มีอะไรใช้ได้เลย... ฉันมักจะลงเอยด้วยคำสั่ง require หรือการรวมโมดูลโดยตรงในผลลัพธ์ของฉัน
เอาล่ะ ใช่ ฉันกำลังประสบปัญหากับเรื่องนี้ และฉันกำลังสวดอ้อนวอนเพื่อขอความช่วยเหลือ ฉันไม่ค่อยสบายใจกับระบบโมดูล หรือแม้แต่กับ rollup เอง ดังนั้นมีใครรู้บ้างไหมว่าจะเปลี่ยนโมดูล request-promise เป็นอย่างอื่นได้ไหม แม้กระทั่ง null?
ชนแก้ว!