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
现在项目中的任何模块都可以引用相同的文件。
我被拉到一个 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
现在项目中的任何模块都可以引用相同的文件。