打包npm的代码时,标准方法是将已转译或捆绑的代码放在单独的lib
,dist
或build
目录中,并设置package.main
属性(和module
/ browser
)指向已构建的文件,这使得在进行裸导入(没有路径)时,构建目录的存在是透明的。但是,如果需要深度导入(导入package.json
属性中未引用的特定模块),则意味着构建目录需要包含在路径中,如下所示:require('package/lib/some-module')
,这看起来很糟糕。>
是否存在同时使用该方法的示例:
npm-link
和Lerna之类的工具我尝试或见过的每种方法都不符合其中一项标准;例如,将package.json
复制到构建目录(lib
/ dist
)允许从构建目录发布或链接软件包,但是Lerna之类的工具不支持这种方法,因为他们期望package.json
位于软件包的根目录中,而不是在构建目录中,因此仅满足点1和3。
将源放置在程序包的根目录中,并在源旁边放置已编译或构建的文件,可以进行深度导入,并且Lerna也支持,但它不符合第三个条件(整理)。
拥有import maps可以解决此问题,但是我不确定是否有任何工具支持导入地图。
问题是:我错过了一些可以满足所有列出的三个点的方法吗?