Я пытаюсь создать плагин таким образом, чтобы для заданного массива имен пакетов плагин извлекал их и добавлял CDN-URL в файл HTML.
Вопрос: Как можноЯ определяю имя глобальной переменной для каждого внешнего пакета?
(Webpack нужна эта информация во время сборки)
Есть два плагина, которые пытаются решить ту же проблему, ноим обоим нужно заранее знать имя глобальной переменной каждого внешнего пакета:
plugins: [
new HtmlWebpackPlugin(),
new WebpackCdnPlugin({
modules: [
{
name: 'vue',
var: 'Vue', // <<<<------ is there a way to infer that???
path: 'dist/vue.runtime.min.js'
},
{
name: 'vue-router',
var: 'VueRouter', // <<<<------ is there a way to infer that???
path: 'dist/vue-router.min.js'
},
{
name: 'vuex',
var: 'Vuex', // <<<<------ is there a way to infer that???
path: 'dist/vuex.min.js'
}
],
publicPath: '/node_modules'
})
]
- dynamic-cdn-webpack-plugin - он использует статический файл с ограниченным количеством модулей:
https://github.com/mastilver/module-to-cdn/blob/master/modules.json
, если модуль там не указан, модуль не может быть выведен из системы.
{
"react": {
"var": "React", // <<<<------ is there a way to infer that???
"versions": {
">= 0.11.0 <= 16.0.0-alpha.6": {
"development": "https://unpkg.com/react@[version]/dist/react.js",
"production": "https://unpkg.com/react@[version]/dist/react.min.js"
},
">= 16.0.0-alpha.7 < 16.6.2 || > 16.6.2": {
"development": "https://unpkg.com/react@[version]/umd/react.development.js",
"production": "https://unpkg.com/react@[version]/umd/react.production.min.js"
}
}
},
"react-dom": {
"var": "ReactDOM", // <<<<------ is there a way to infer that???
"versions": {
">= 0.14.0 <= 16.0.0-alpha.6": {
"development": "https://unpkg.com/react-dom@[version]/dist/react-dom.js",
"production": "https://unpkg.com/react-dom@[version]/dist/react-dom.min.js"
},
">= 16.0.0-alpha.7 < 16.6.2 || > 16.6.2": {
"development": "https://unpkg.com/react-dom@[version]/umd/react-dom.development.js",
"production": "https://unpkg.com/react-dom@[version]/umd/react-dom.production.min.js"
}
}
},
...
}
Другие плагины, которые пытаются экстернализовать пакеты:
Кажется, что теперь они оба заботятся о глобальной переменной name. (возможно я ошибаюсь) кажется, что они ожидают, что эти пакеты будут установлены позже.