Переименуйте определение функции в выводе AMD веб-пакета - PullRequest
0 голосов
/ 21 января 2020

При выводе модуля AMD из веб-пакета мне нужно изменить имя функции define, используемой в выходном пакете.

Это потому, что я предоставляю скрипт для библиотеки, которая имеет собственные пространства имен define функция для Foo.define.

Учитывая выходную конфигурацию веб-пакета AMD:

module.exports = {
  //...
  output: {
    library: 'MyLibrary',
    libraryTarget: 'amd'
  }
};

Вместо вывода:

define('MyLibrary', [], function() {
    return _entry_return_;
});

Веб-пакет выведет что-то вроде:

Foo.define('MyLibrary', [], function() {
    return _entry_return_;
});

После 2 часов поиска в Google я все еще не могу найти правильную конфигурацию для веб-пакета или соответствующего плагина, поэтому я спрашиваю здесь.

Благодарим за помощь!

РЕДАКТИРОВАТЬ:

В конце концов это то, что сработало благодаря ответу ниже:

plugins: [].concat(plugins, [
  new ReplaceInFileWebpackPlugin([
    {
      dir: path.resolve(__dirname, 'public/questions-flow-chart'),
      test: [/bundle\.js$/],
      rules: [
        {
          search: /^define/,
          replace: 'Foo.define'
        }
      ]
    }
  ])
])

1 Ответ

1 голос
/ 22 января 2020

Попробуйте использовать replace-in-file-webpack-plugin

что-то в этом роде

    plugins: [
        new ReplaceInFileWebpackPlugin([{
            test: [/\.js$/, /\.ts/],
            rules: [{
                search: /define/ig,
                replace: 'foo.define'
            }]
        }])
    ]
...