能否在不使用import map的前提下同时支持ESM与Node/NPM?
如何让ESM库同时支持直接导入和NPM使用且无需import map?
我正在开发一个以ESM格式发布的库,核心目标是让用户无需构建步骤、甚至不用Node/NPM就能直接使用(克隆仓库后直接导入即可);但我也清楚,大部分开发者还是会倾向于通过NPM来使用它。
原本同时支持这两种使用方式并不难,但我的库依赖d3js。要让ESM正常工作,要么把d3打包进库,要么通过CDN URL直接导入。但这两种方案都会破坏NPM的依赖解析机制——即使用户自己也在用d3,应用里也会出现两份完全相同版本的d3。
目前我找到的最优方案是用裸标识符import * as d3 from 'd3'导入d3,再配合ESM的import map将其重定向到jsdelivr,示例代码如下:
<script type=importmap> { "imports": { "d3": "https://cdn.jsdelivr.net/npm/d3@7/+esm" } } </script> <script type='module' src="https://cdn.jsdelivr.net/npm/iobio-charts@0.10.0/index.js"></script> <iobio-data-broker url="https://s3.amazonaws.com/iobio/NA12878/NA12878.autsome.bam"> </iobio-data-broker> <iobio-histogram broker-key="coverage_hist"> </iobio-histogram>
但我希望能去掉import map,请问有没有可行的实现办法?
内容的提问来源于stack exchange,提问作者anderspitman
相关产品推荐
相关产品推荐

