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

//img.mukewang.com/szimg/5eabec6d09e330bb11830336.jpg

然后装了一下 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

这个我还没弄成功...

1
0

从基础到实战 手把手带你掌握新版Webpack4.0

知识点+项目实例+原理讲解 全方位解析Webpack4新版本

3627 学习 · 1291 问题

查看课程