之前项目中一些包需要更改,然后放到本地项目中维护。因为某些网络限制,也有些包无法install下来,本地代码库会维护包。
以下测试基于mac npm 6.9.0版本,博客园写了一篇(https://www.cnblogs.com/lin0123/p/13020292.html),****也迁移下
正常情况下在项目 package.json 所在的目录(一般也是项目根目录)运行npm install xxxx 命令之后,会从远程或者代理地址下载xxxx包到node_modules,然后在package.json生成对应的包名和版本
如果想要依赖本地自己开发的一个包或者更改别人的包放到本地维护需要怎么处理呢?
如果跟项目package.json平级的目录有一个文件夹 test12121212121 ,在test12121212121里面用 npm init -y 初始化了这个文件夹, 这个文件夹就会有一个package.json文件。
在根目录 npm install test12121212121 就会将这个文件夹下载到 node_modules下面,根目录下的 package.json 会生成对应的文件路径,如下图:
红色框对应的本地维护的包,蓝色框根目录下的package.json
注意:此时npm install 对应的文件夹名,install的是文件夹名称,install包名会从远程寻找,如果本地包名和文件夹名不一样,对应的package.json显示如下:
sdddddd 对应的包名称,test12121212121 对应的文件夹名称, 运行的命令是 npm install test12121212121
有些场景我们本地会维护很多包但是不希望都创建一个文件夹,希望放到统一的文件夹里面,比如 根目录新建一个lib文件夹,这个时候如果想要下载本地包,需要手动将依赖更改成对应的路径,运行npm i命令便可以
如下图所示:
lib下有个testa文件夹,包名称是cccccccc,可以在根目录的package.json手动指定下载这个包,包名 对应的文件路径,写法如下,运行npm install的时候会将对应的文件包下载至node_modules
注意点:如果项目中存在了package-lock.json文件,那么你下载本地包的时候可能不会将包增加至node_modules文件夹下面,但是在package-lock.json中会存在记录,如下图的wewtwet包
最后,本地维护的包需要满足能够上传npm包管理库的条件,本地的包如果需要能够被下载一定要有package.json文件(快速的方法就是在本地包文件夹 npm init -y 快速生成),否则的话会找不到。