@miniven

Как задать глобальную переменную в Browserify?

Использую Gulp + Browserify. Есть такой таск для сборки JS:

const scriptsServe = () => {
  const alias = [
    'all-page.js',
    'index-page.js'
  ];

  PATH.src.scripts.forEach((entry, index) => {
    const bundle = browserify({
      entries: entry
    });

    bundle.transform(babelify);
    bundle.bundle()
      .pipe(source(alias[index]))
      .pipe(gulp.dest(PATH.dest.scripts));
  });
};


И еще немного в package.json:

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


Работает хорошо: создаются два файла. Один из них для главной страницы, другой для всех, включая главную. В обоих используются плагины, которым необходима библиотека jQuery, к сожалению. Так вот я бы хотел подключить её отдельным файлом, что я и сделал. Но возникает проблема: переменные $ и jQuery вроде как видны в обоих файлах, но Browserify почему-то все равно импортирует её в оба моих файла, даже если я нигде не напишу import $ from 'jquery';

В итоге библиотека подключается три раза: один раз внешним скриптом, по одному разу импортируется в каждый мой js-файл. Что я делаю не так и как можно решить эту проблему?
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@miniven Автор вопроса
В общем проблема решилась добавлением следующих строк в gulpfile.js:

Заменил
bundle.transform(babelify);

на
bundle.transform(babelify, {
      global: true
    });
    bundle.transform("browserify-shim", {
      global: true
    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы