Разрешить глобальные преобразования с помощью grunt browserify

Я добавил jQuery в качестве тега сценария в свой HTML-файл и добавил его в package.json для работы с browserify-shim следующее:

  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  },
  "browserify-shim": {
    "jquery": "global:jQuery"
  },

Я могу представить его в моем основном файле сценария с помощью простого require('jquery') вызов.

Проблема в том, что я использую некоторые плагины jQuery, которые внутренне делают require('jquery') и поскольку преобразования browserify не применяются к зависимостям зависимостей, это приводит к тому, что browserify жалуется на связывание, так как не может найти jQuery,

Теперь я знаю, что могу решить эту проблему путем применения глобальных преобразований, поскольку я не могу найти способ сделать это легко.

Документы Browserify говорят, что вы не можете применять глобальные преобразования в файле пакета, поэтому следующее не работает (что я думал, будет):

  "browserify": {
    "global-transform": [
      "browserify-shim"
    ]
  },

  "browserify": {
    "transform": [
      "browserify-shim"
    ],
    "global": true
  },

Я также попытался добавить опцию к моему Gruntfile.js следующим образом, но даже это не работает:

browserify: {
        options: {
            global: true
        },
        dist: {
            files: {
                'js/bundle.js': 'js/script.js'
            }
        },
    },

Последний вариант - добавить вручную browserify-shim для каждой зависимости package.json, но я не хочу этого делать, поскольку это означает, что каждый раз, когда я добавляю новый плагин, мне придется повторять один и тот же процесс.

Любые идеи, чтобы смягчить вышеуказанную проблему?

1 ответ

Вы должны иметь возможность применять global-transforms, предоставляя transform с опцией хэширования:

 "browserify": {
   "transform": [
     ["browserify-shim", {global: true}]
   ]
 }
Другие вопросы по тегам