如果一个 npm 包附带多个 dist 文件夹,我如何知道在构建我的应用程序时使用了哪个?

If an npm package ships with multiple dist folders, how do I know which one is used when my App is built?

我在我的应用程序中使用了一个 npm 包 (aurelia-google-maps)。该软件包附带 AMD、System、CommonJS、Native Modules 和 ES2015 dist 文件夹,如下所示:

/node_modules/
    /aurelia-google-maps/
        /dist/
            /amd
            /system
            /native-modules
            /es2015
            /commonjs

在我的打字稿应用程序中,我只是导入所有 类 并作为:

import {Configure} from "aurelia-google-maps"

有什么方法可以让我在构建应用程序时找出使用的是哪个发行版?

我认为如果没有构建工具的帮助,您无法确定它。可以分两步完成:

  • 使用 type of 检查运行时代码中变量的可用性:
const distType = typeof DIST_TYPE !== 'undefined' ? DIST_TYPE : void 0;
  • 配置构建工具以将 DIST_TYPE 替换为分发目标

然后您可以通过 distType 变量在普通代码中使用它。


对于打字稿,你只需要一个额外的声明

declare const DIST_TYPE: string | undefined;

我想通了。似乎 Aurelia 自动注册了它自己的名为 DistPlugin 的插件,该插件使用 native-modules 文件夹解析依赖关系。有关如何更改此行为的说明,请参阅 this wiki。