logo科技微讯

看源码:untildify、tildify

作者:科技微讯
日期:2023-06-01
📝 笔记

untildify

untildify 用来把 ~/Desktop 转换为 /Users/keke/Desktop,而 tildify 则反过来。

untildify 容易理解,通过 os.homedir() 获取 tilde 所代表的路径,然后替换即可,但需要注意一些 corner case,例如要支持 Windows 系统下的 \ 路径分隔符(现在的 Windows 也支持 /),要支持 ~ 等,更完整的 corner case 可以看项目的 test.js

untildifytest.js 用到一款叫 rewire 的库,它和 require 读音很似,事实上用法也完全一样,除了一个区别:

rewire acts exactly like require. With just one difference: Your module will now export a special setter and getter for private variables.

untildifytest.js 中使用 rewire 更改了 untildify 中的 homeDirectory 变量的值,以测试不同情况下的表现。rewire 已经不怎么维护了,但 jest 支持类似的 mock,虽然用起来没有 rewire 那么简单和直观。

tildify

tildifyuntildify 作用相反。它用到了两个我很少用的属性或方法:

  • path.normalize():在这里主要用来转换 ...
  • path.sep:在不同的系统下可能不同(主要是 Windwos 系统),所以不能直接使用 /
donation赞赏
thumbsup0
thumbsdown0
暂无评论