在翻看metamask-extension源码时候看到package.json中有个字段"packageManager": “yarn@4.9.1”,但在npm中查看yarn,最新版还是1.22.22,奇怪,那么实际项目怎么安装这个v4的yarn呢。仔细查下发现,其中是使用了corepack来做包管理器和版本管理。
8月 12, 2025
EventEmitter初版 class EventEmitter{ constructor(){ this.events={} } on(type,listener){ if(!this.events[type]){ this.events[type]=[] } this.events[type].push(listener) } emit(type,...args){ this.events[type].forEach(listener=>{ listener.call(this,...args) }) } off(type,listener){ if(this.events[type]){ const index=this.events[type].indexOf(listener) if(index!==-1){ this.events[type].splice(index,1) } } } once(type,listener){ const onceListener=(...args)=>{ listener.call(this,...args) this.off(type,onceListener) } this.on(type,onceListener) } } 测试 const eventEmitter=new EventEmitter() const listener=(args)=>{ console.log(args); } eventEmitter.once('test',listener) eventEmitter.off('test',listener) eventEmitter.emit('test',{a:1}) 执行上述代码,会发现test事件被触发了一次,预期应该是不执行的,因为off了。解决办法如下。
3月 18, 2025
使用npm开发中会发现,比如将node_modules文件夹删除,然后重新安装依赖,会发现安装速度非常快,这是因为npm有缓存机制。
2月 13, 2025
最近看一些项目发现依赖包很多,随便拿了几个搜索下,发现并没有用,因此可以删除了。但这样的包,一个个查询检索确认删除还是太麻烦。 想着怎么能高效的检测并删除不用的依赖包,基于这个需求,我写了一个小工具。
1月 26, 2025
package.json中除了dependency和devDependency之外,还有一个peerDependency。这里通过解决一个实际报错来了解下它。
1月 2, 2025
项目中经常会使用很多第三方的NPM包,比如Mousetrap,很多时候会遇到bug,但是官方的bug还没修复或者还没合并发包,那么这个时候怎么办呢。这里总结下方法。
10月 24, 2024
有时因为网络或安全问题,需要切换项目中的npm包源。一般做法是切换npmrc中源,但切换后进行安装包时,会发现install后,包还是会走老的源,尤其是lock文件已生成的情况。这里就分析下registry不work的问题。
9月 17, 2024
本文是作者对node项目下的安全组件扫描处理的介绍,包括node项目下的安全组件扫描处理的优势、实现细节、相关资料等,这些步骤可以帮助作者提高node项目下的安全组件扫描处理的效率。
6月 2, 2024
本文介绍关于流写入文件时造成的文件内容被清空问题,包括使用场景、实现细节等,以提高关于流写入文件时造成的文件内容被清空问题的效率。
4月 27, 2024
本文是作者对nodejs项目中下加载esmdule的介绍,包括nodejs项目中下加载esmdule的优势、实现细节、相关资料等,这些步骤可以帮助作者提高nodejs项目中下加载esmdule的效率。
4月 10, 2024