Drupal 8 jQuery 冲突

Drupal 8 jQuery conflict

在我的 Drupal 8 项目的前端部分,我有几个 javascript 模块使用 Browserify(和 gulp)链接在一起。

我在几个模块中使用了Foundation,Foundation的制作方式是在$对象上添加了一个foundation()函数

这是我的 package.json 的摘录,我在其中声明了我的项目需要的垫片:

"browser": {
    "jwplayer": "./libraries/utils/jwplayer/jwplayer.js",
    "Foundation": "./node_modules/foundation/js/foundation/foundation.js",
    "jquery": "./node_modules/jquery/dist/jquery.min.js",
    "Backbone": "./node_modules/backbone/backbone.js",
    "underscore": "./node_modules/underscore/underscore-min.js"
  },
  "browserify-shim": {
    "jquery": "$",
    "underscore": "_",
    "jwplayer": "jwplayer",
    "Foundation": {
      "exports": null,
      "depends": [
        "jquery"
      ]
    },
    "Backbone": {
      "exports": "Backbone",
      "depends": [
        "jquery",
        "underscore"
      ]
    }
  },
  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  }

当我退出 Drupal 管理员时一切正常。

虽然当我以管理员身份登录时,Drupal 在顶部添加了一个小任务栏,帮助您访问不同的访问菜单,以及一些其他有用的东西。

当 Drupal 这样做时,它使用自己的 jQuery 版本,并附加一定数量的插件。

现在,当我导出自己的 jQuery 并在我的 package.json 文件中将其声明为 $ 时,我显然删除了 Drupal 的 jQuery 及其附带的所有插件,破坏了顶部栏。

我怎么可能告诉 Foundation 和每个需要 jQuery 的模块或插件使用 Drupal,而不是我的 node_modules文件夹?

环顾 Whosebug 我发现了这个 How do I use Browserify with external dependencies? 我替换了

"browserify-shim": {
    "jquery": "$"
}

"browserify-shim": {
    "jquery": "global:jQuery"
}

现在可以正常使用了。我还得做这件事有点奇怪 var $ = require('jquery'); 虽然在我的模块中。如果有人对此有更多信息,我会洗耳恭听。