требовать библиотеки cdn в браузере, не связывая их в окончательный файл js

Если у меня есть библиотека, которая вытаскивается из cdn и мне не хотелось бы, чтобы она была частью окончательного js-файла, но я могу потребовать ее с помощью браузера, как мне решить эту проблему?

Вот как я сейчас решаю это, используя alias и файл прокладки.

browserify: {
    options: {
        debug: true,
        transform: [ 'reactify' ],
        alias: [
            'client/shims/jquery.js:jquery'
        ]
    },
    app: {
        src:  'client/app.js',
        dest: 'public/app.js'
    }
}

вот файл прокладки client/shims/jquery.js, который я назвал jquery, поэтому я могу использовать require('jquery') вместо полного пути.

module.exports = $;

Есть ли ярлык в grunt-browserify для поддержки этого сценария? Я хотел бы знать, можно ли определить его в Gruntfile.js без создания файла прокладки.

Добавление external: [ 'jquery' ], кажется, полностью игнорирует его и не работает.


person prabir    schedule 22.12.2013    source источник
comment
Похоже, у меня есть аналогичный вопрос: stackoverflow.com/questions/20915307/ - в настоящее время я обрабатываю это вне браузера и просто явно передаю jQuery в библиотеку через файл config. github.com/miohtama/bitcoinaddress.js/blob/master/ demo.js#L77 Однако мое решение не идеально.   -  person Mikko Ohtamaa    schedule 07.01.2014
comment
Хотел задать тот же вопрос. Есть новости по этому поводу?   -  person Sergejs Rižovs    schedule 13.02.2014


Ответы (2)


С помощью browserify-shim вы можете добавить это в свой файл package.json:

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

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

Тогда jquery будет доступен в ваших модулях через require('jquery')

person silkAdmin    schedule 15.02.2014
comment
Как насчет сторонних модулей, требующих jquery? Кажется, что browserify-shim не заменяет эти требования глобальными, так или иначе, чтобы сделать это? - person neurosnap; 28.04.2015

Если вы загрузите jQuery перед пакетом Browserify на странице, $ будет доступен как глобальный.

person kpimov    schedule 30.08.2015