npm link的使用:本地npm包修改不发布同步更新
Author:zhoulujun Date:
在本地开发npm模块的时候,我们可以使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试和测试
在这里,我们有两个项目
npm-link-module-test,是我们要开发的npm模块
webpack-item-example,是我们要运行npm模块的项目
link建立
首先,进入需要修改的包,在npm-link-module-test项目目录,执行npm link。
cd npm-link-module-test npm link
执行命令后,npm-link-module会根据package.json上的配置,被链接到全局,路径是{prefix}/lib/node_modules/<package>,这是官方文档上的描述,我们可以使用npm config get prefix命令获取到prefix的值(不过我这里使用的是windows,实际被链接到的路径是{prefix}/node_modules/<package>,不知道是不是npm升级的原因),如果是win系统的话,实际观察,会发现在{prefix}/lib/node_modules/<package>路径下的node-link-module是一个快捷方式
然后,进入webpack-item-example项目目录,执行 npm pm-link-module-test
cd webpack-item-example npm link npm-link-module-test
这样,这样npm 引用,就是link到项目
解除link
解除项目和模块link,项目目录下,npm unlink 模块名
解除模块全局link,模块目录下,npm unlink 模块名
npm link 将目标module链接到project的node_modules下,正常情况下是可以进行开发和调试。
但由于module并不是真正地移动到了project的node_modules下,而是以一种链接的形式,所以,module无法使用project的node_modules下的其他包,而是单独维护一个node_modules,这在一般情况下并无异常,但在有些情况下却会发生出意外的错误
在project和module有相同的依赖包,且这个包会因为存在两个实例出现问题时。
比如我在npm link时对project里的A包做了一些操作,同时module里也有A包,这时两个A包并不是一个实例,它们互不影响。而在通过npm安装module时,它们用的都是一个A实例,这时可能就会出现一些问题
那么有其他的解决方案吗?
npm link 之外的解决方案
alias 别名:可以在project中配置A的别名,以webpack为例:resolve: {alias: {'npm-link-module-test': ./npm-link-module-test}}
软连接:ln -s /path/npm-link-module-test,具体参看:《mac或linux上面的软链接(符号链接)》
参考文章:
npm link的使用 https://www.jianshu.com/p/aaa7db89a5b2
npm link的基本用法及实例 https://blog.csdn.net/u014291497/article/details/75194456
转载本站文章《npm link的使用:本地npm包修改不发布同步更新》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/nodejs/8553.html
延伸阅读:
- 使用npm发布npm组件包和使用git上面的私有包操作笔记
- nodejs npm安装本地node-sass失败,ruby gem 安装sass失败总结
- npm audit fix,fixed 0 of 1 vulnerability in 1 vulnerability required manual
- 如何在mac上彻底卸载nodejs:Mac下彻底卸载node和npm
- npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher
- npm 常用命令详解
- nodejs查看npm安装所有包,并卸载多余的包
- dependencies与devDependencies之间的区别
- npx学习笔记整理
- 再谈yarn与npm的优缺点对比—见证npm如何逐渐壮大
- NPM本地资源库搭建与使用
- npm仓库源镜像的设置与查看:npm config set/get registry
- nvm使用详解——命令解析大全
- npm包管理问题:安装nvm后如何管理各个版本间包
- npm包package.json字段解析
- package.json中自定义脚本/变量—npm run 参数接手
- mac与nodejs升级后:npm8安装git+https://github.com/包报错
- pnpm为什么在npm/cnpm/tnpm/yarn等包管理器中脱颖而出
- 彻底锁定项目环境:package-lock包依赖于nodejs环境/npm版本锁
- nodejs升级到最新LTS版本方法汇总:linux/mac/window—npm/yum/ssh
- pm2托管npm命令:linux持久运行nodejs npm run服务(开机启动)
- window powerShell node.js npm很多命令无法使用,如yarn vue
- vue2老项目从mac还到windows环境跑不起来,npm无法安装
- npm时报错解决EPERM: operation not permitted, lstat 记录