ค้นหาเว็บไซต์

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?

ชนแก้ว!

บทความที่เกี่ยวข้อง