You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在不使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:02:34