-
-
Notifications
You must be signed in to change notification settings - Fork 88
Open
Description
I'd like support for building with packages that only provide ESM dist, one example is jsx-dom, which doesn't provide UMD/IIFE dist, but only providing ESM.
We can already use ESM dist in the userscript via dynamic import in async IIFE:
// ==UserScript==
// @name esm-only packages support
// @namespace vite-plugin-monkey
// @version 0.0.1
// @author owowed
// @license ISC
// @match https://www.google.com/
// ==/UserScript==
(async function () {
'use strict';
var React = await import("https://cdn.jsdelivr.net/npm/[email protected]/index.min.js");
const test = /* @__PURE__ */ React.createElement("div", null);
document.body.appendChild(test);
console.log(React);
})();
Maybe we can add a new build.externalDynamicImports
configuration that'll automatically resolve ESM-only external modules to dynamic import:
import { defineConfig } from "vite";
import monkey from "vite-plugin-monkey";
export default defineConfig({
plugins: [
monkey({
entry: "./src/main.js",
userscript: {
match: [
"https://www.google.com/"
]
},
build: {
externalDynamicImports: { // similar to externalGlobals
// replace any "jsx-dom" import in the source code using `await import(url)`
"jsx-dom": "https://cdn.jsdelivr.net/npm/[email protected]/index.min.js"
},
}
})
]
});
(Edited for more clarity)
Metadata
Metadata
Assignees
Labels
No labels