Webpack 怎么解决 import 的包的依赖问题?

2016-08-01 15:27:48 +08:00
 sunjourney

比如在 SPA 组件中要引入一个 Tool , Tool 依赖 jQuery, underscore 等插件,直接 import Tool, 会找不到 '$' 和 '_',用 webpack 的 SHIMMING MODULES, 或者 external libs ,都需要类似的写法:

require("imports?$=jquery!./file.js")
new webpack.ProvidePlugin({
  $: "jquery",
  jQuery: "jquery",
  "window.jQuery": "jquery"
})

这是在已知会用到 '$' 和 '_' 的情况下还可以这么用,万一用了些不知名的 lib ,要全局暴露的名字需要的等报错的时候在 Webpack 加入岂不是很蠢。

脱离 webpack 框架的写法是 html 插入 被依赖的 <script> ,变量名全局都可以用,不用特别声明。但 webpack 组件不声明就读取不到 $ 和 _,怎么保证 import 来的 module 可以正常工作?

7005 次点击
所在节点    前端开发
4 条回复
Tigris
2016-08-01 17:10:36 +08:00
这要看你怎么用 webpack
withinthefog
2016-08-01 18:50:44 +08:00
ProviderPlugin?
NemoAlex
2016-08-01 19:03:59 +08:00
哪里用哪里 import 就好了,现在的库就算不支持 AMD ,也不至于说必须要用 window 上的变量啊。
cbais7890
2016-08-25 00:32:37 +08:00
这个问题应该由 tool 的作者在打包的时候就解决掉, 不应该留给使用者

例如在 tool.js 中
import $ from "jquery"

那么在打包的时候,他应该在 webpack 中声明这两个依赖以何种方式加载
例如:
output: {
...
libraryTarget: 'umd'
},
externals: {
'jquery': 'umd jquery'
}

然后只需要正常引用 tool 就好, 只要 node_modules 下面安装了 jquery , 那么 tool 自己就会找到 jquery , 并不需要暴露到 window 上, 也不需要在别的地方额外引用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/296366

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX