Я знаю, что это старый пост, но подумал, что было бы полезно упомянуть, что загрузчик скриптов webpack может быть полезен и в этом случае. Из документов webpack:
«скрипт: однократно выполняет файл JavaScript в глобальном контексте (например, в теге скрипта), требует не анализировать».
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
Я нашел это особенно полезным при миграции старых процессов сборки, которые объединяют файлы поставщиков JS и файлы приложений. Предупреждение: похоже, что загрузчик скриптов работает только через перегрузку require()
и не работает, насколько я могу судить, указав его в файле webpack.config. Хотя многие утверждают, что перегрузка require
- плохая практика, она может быть весьма полезной для объединения скрипта поставщика и приложения в один пакет и в то же время раскрытия глобальных объектов JS, которые не нужно включать в дополнительные пакеты веб-пакетов. Например:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
Это сделает $ .cookie, History и moment глобально доступными внутри и вне этого пакета и объединит эти библиотеки поставщиков со скриптом main.js и всеми его require
d-файлами.
Кроме того, с помощью этой техники полезно:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
который использует Bower, будет просматривать main
файл в каждой require
библиотеке d package.json. В приведенном выше примере для History.js не main
указан файл, поэтому путь к файлу необходим.
new
передwebpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html