npm link本地开发调试组件库/模块包

  如果很多前端项目共用一个组件/方法,那么这个组件/方法就会被剥离出来,抽取出来的多了,就会成为组件库/模块包,这样做的好处就是,每次我们只要单独对组件库/模块包进行维护就可以达到所有项目里所引用组件/模块的更新。

  以vue项目的组件库(fe-standard-libs)为例,组件库地址会在 package.json 中被定义

{
  "name": "app",
  "version": "1.0.0",
  "description": "A Vue.js project",
  "scripts": {
    "dev": "vue-cli-service serve",
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build --no-module",
  },
  "dependencies": {
    ...
    "fe-standard-libs": "git+https://xxxx.com/xxxx/xxxx.git#xxxxxxxx",
  },
"devDependencies": {
    ...
  }
}    

  但是每次对组件库进行维护的时候,就会出现无法,或是说很难进行调试的情况,总不能凭着感觉改,然后直接推到远程仓库更新组件库,最后在生产环境里验证吧,所以,这个时候就需要 npm link 来帮忙进行本地开发调试。

  首先,先进入本地组件库 fe-standard-libs 项目,然后执行 npm link 命令。即先 cd fe-standard-libs,然后 npm link。这个时候,这个项目会被链接到全局,需要注意的是这个被链接到全局的项目名会以该项目根目录下 package.json 中的 name 字段命名,windows下的路径是:{prefix}/node_modules/<package>,如果不知道prefix值的话,可以执行命令npm config get prefix获取。

   然后,你就可以在这个文件夹下找到 fe-standard-libs 项目的快捷方式。

   然后进入你的开发项目,叫 app 好了,先 cd app,然后 npm link fe-standard-libs。这个时候你到 app/node_modules 文件夹下去查看,也会发现多了一个 fe-standard-libs 项目的快捷方式,这个会优先于 package.json 下载下来在 node_module 的同名文件。然后 npm run dev 启动项目app,你就可以在项目 fe-standard-libs 中修改代码了,代码也会同步更新显示在 app 的页面中,如果 app 项目有开启热更新的话,你也可以看到同步看到 Terminal 执行热更新的过程。

  最后,如果开发调试完了,app 与 fe-standard-libs 之间的软链接没去掉不管也没关系,但是要是有强迫症必须要去掉也行,在app项目中执行 npm unlink fe-standard-libs 即可断开二者的联系。

posted @ 2022-10-22 20:09  他好像一条狗啊  阅读(1957)  评论(0编辑  收藏  举报