今天在做一个小demo的时候遇到了这样一个场景, 先上图
需要在index文件中执行webpack函数去进行构建, 通过constprodConfig = require('../../lib/webpack.prod')
获取webpack.prod.js中的配置, 然后在脚本中执行, 于是想到了一个问题:
1) 当前的的process.cwd()已经进到了template目录下
2) 脚本的执行路径__dirname为smoke目录
那么执行webpack时所用的到依赖index脚本是怎么拿到的呢?
于是打开百度:
无果
于是做了一个小测试
1) 在磁盘根目录下新建一个文件夹命名为dependency, 打开终端执行 npm init --y
初始化目录, 并安装axios依赖
2) 在的denpendency文件夹中依次往下新建a/b/c/d四个文件夹, 如图:
3) 在d文件夹中新建test.js文件夹, 输入以下内容
constaxios = require('axios')
console.log(axios)
run code...
axios对象被正常打印
结论:
1) node在运行脚本时如果当前目录没有需要的依赖, 它会一级一级往它的上级目录找, 找找找找找, 知道找到当前文件所在的磁盘的根目录
2) 猜测: 如果根目录还是没有找到的话, 回去全局的node_modules下面找(也就是你使用npm install some-dependency -g
的时候安装的那些依赖), 没有做进一步的验证, 有兴趣的同学可以试试哦!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。