externals: ['lodash']之后,需要手动在业务代码添加import _ from 'lodash'?
来源:5-1 Library 的打包
weixin_慕仔4426869
2019-12-22
老师 有个疑问,你说加了这个配置之后 externals: [‘lodash’],业务引入我们的包,还需要自己在引入lib包之前 手动引入lodash(import _ from ‘lodash’)。但是我看打包后的文件已经有 相关引入了。按理它应该就会自动去node_modules里面加载吧。
下面是打包以后的:
!function(e, n) {
“object” == typeof exports && “object” == typeof module ? module.exports = n(require(“lodash”)) : “function” == typeof define && define.amd ? define([“lodash”], n) : “object” == typeof exports ? exports.library = n(require(“lodash”)) : e.library = n(e.lodash)
} (window, (function(e) {
…
…
…
}));
1回答
-
Arafat
2020-05-01
按照你的思路来了一遍,先打包生成了库文件 library.js
然后重开一个项目,把库文件单独放进了一个文件夹 libs 里
接着编写业务代码,main.js,在其中直接引入库文件
import libs from '../libs/library' console.log(libs.string)
然后打包,果不其然会报错,大概意思是找不到 lodash
然后装了一下 lodash,并单独把 lodash 文件夹整个提到 libs 文件夹里
并在 main.js 中引入
import lodash from '../libs/lodash' import libs from '../libs/library' console.log(libs.string)
果不其然,继续报一样的错
等于说从外部引入的模块之间没有耦合,是单独的,不会互相污染
接着继续试,把 lodash 和 library 都放到 node_modules 里面
然后这次在 main.js 里只引入 libs
import libs from 'library/library' console.log(libs.string)
会发现,能成功打包并且 console 出正确的内容
说明,在 webpack 环境下打包时,如果你引用的库文件 A.js ,引用了别的库文件 B.js
A 会自动帮你从 node_modules 中引入 B,如果找不到 B 就会报错,所以不用再刻意去引入
不过现在不知道的是,如果我的 lodash 不在 node_modules 环境下,该怎么正确使用 library
这个我还没弄成功...
10
相似问题