Drupal 8 多个自定义模块使用相同的外部 JS 库(例如 Angular)

Drupal 8 Multiple Custom Modules Using Same External JS Lib (e.g. Angular)

我被拉到一个 Drupal 8 项目中,其中包含多个需要使用 Angular.js 的自定义模块。向每个模块提供 Angular 文件的最佳方式是什么?

现在,每个模块都引用 googleapis.com 在 my-module.libraries.yml 中托管的远程 Angular 文件。

my-module:
  version: 1.x
  js:
    https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js: { type: external, minified: true }
    https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-sanitize.min.js { type: external, minified: true }
    js/my-module.js: {preprocess: false}
  dependencies:
    - core/jquery
    - core/jquery.ui
    - core/jquery.ui.accordion

但是,我更愿意在本地托管 Angular 文件并将它们列为依赖项,就像 jQuery 一样。

我知道我可以将 Angular 文件放在模块本身中,但是每个模块都需要自己的副本。

无论正确的方法是什么,我的目标是在本地托管 Angular 文件并从依赖于 Angular 的每个模块引用它们。

解决此问题的最简单方法是在 Drupal 项目的根目录下添加一个 /libraries 文件夹。然后为您正在使用的每个外部库创建一个子目录,并从您的 module.libraires.yml 文件中引用它。

例如,我创建了 /libraries/angular/js,将文件放在那里,然后在下面的代码中以 / 开头引用它们。

my-module:
  version: 1.x
  js:
    /libraries/angular/js/angular.min.js: {}
    /libraries/angular/js/angular-sanitize.min.js: {}
    js/my-module.js: {}
  dependencies:
    - core/jquery

现在项目中的任何模块都可以引用相同的文件。