webpack - 来自 CDN 的 Webpack 外部,用于 UMD 应用程序
问题描述
我正在尝试配置 Webpack 外部,以便我的一些部门不会最终出现在我的 UMD 应用程序的捆绑包中。我已经阅读了有关外部 CDN https://webpack.js.org/configuration/externals/的文档,但是我的印象是,当输出中的库目标为“UMD”时,该选项不起作用:
output: {
filename: 'scripts/[name].js',
path: path.resolve(__dirname, '../build/'),
libraryTarget: 'umd'
}
这是我期望它的工作方式:
externals: {
'lodash': ['https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js', '_']
}
但是每当我配置这个时,我都会遇到构建错误:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! my-app@2.8.5 build:dev: `npx webpack --config ./config/webpack.config.dev.js`
npm ERR! Exit status 1
只是为了提供更多背景信息:我正在与许多不同供应商合作的网站上工作,我和我的团队已经构建了在该网站上运行的多个应用程序。我们一直在开发的那些应用程序使用一些常见的库,例如 lodash/jquery/moment/...,有时这些库的版本完全相同,所以我想使用 CDN,而不是在这些单独的应用程序中捆绑相同的代码。这将允许最终用户只加载一次库。
到目前为止,我们已经在使用 requirejs,其中一些配置可以让我们实现这一点。例如,这个 lodash 需要配置:
window.requirejs.config({
paths: {
'lodash': '//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min'
}
});
我可以很容易地在 webpack 中使用 lodash 作为外部:
externals: {
'lodash': 'lodash'
}
而且效果很好......但是我的目标是在库版本方面真正灵活,这就是为什么我试图将 CDN 直接添加到 webpack 外部配置中。
提前感谢您的帮助:-)
webpack 版本 4.42.0
解决方案
推荐阅读
- angular - Angular - 当数据来自父级时不应用类
- c# - Xamarin - 创建模拟器设备时出现系统映像下载错误
- permissions - 让用户“GRANT SELECT”而不让他们成为管理员或授予他们控制权限
- sql - 用'+'分割字符串并搜索所有字符串是否存在于表中的一行中
- python - 在 Heroku 上部署 Django/VueJs 应用程序一直失败,并出现错误 main.js module not found
- sql - 这是 COALESCE 在此 MS SQL 查询中的工作方式: ORDER BY COALESCE([UpdatedOn], [CreatedOn]) DESC
- python - 如果小写元素在列表中而不将列表更改为小写
- prestashop - 如何在 prestashop 中获取当前状态为“已完成”的所有订单 ID?
- pip - 得到导入错误,DLL文件加载失败,有python3.7,安装了tensorflow和keras,仍然是同样的错误
- java - Gradle 在 testRunTime 期间排除本地 jar