前端模块开发已经成为了开发标准。模块开发带来的一大便利就是让咱们能够跨页面甚至跨应用复用代码。当咱们跨应用复用模块时,就须要借助 npm 把模块发布出去供各个系统调用。今天介绍的 wml 是一个进行模块调试的利器。html
wml 侦听某个文件夹中的更改(使用Watchman),而后将更改的文件复制到另外一个文件夹中。前端
wml 是一个 CLI 工具,其工做方式与ln -s很是类似。首先,使用 wml add
命令设置连接,而后运行wml服务(wml start
)开始监听。仅此而已!node
让咱们面对现实吧,有时符号连接还不够。Github中有超过 1万个 关于 "support for symlinks"。react
到目前为止,我遇到的两个例子是: React Native 的包管理器缺失对 symlinks 的支持 和Webpack的 inability to find linked modules dependencies。不少人的办法就是直接修改 node_modules 下的文件夹,可是这会形成不少问题:webpack
npm install
,就又搞砸了wml 使用 Facebook 的超快 Watchman 来监视源文件夹中的更改,并将它们(而且仅复制)复制到目标文件夹中。git
windows 下为了让 wml start
可以工做须要执行如下命令:github
# npmGlobalPrefix 能够经过 `npm prefix -g` 获取
$ watchman watch ${npmGlobalPrefix}\node_modules\wml\src
# 必定要重启电脑让配置生效!
复制代码
$ npm install -g wml
复制代码
wml add|a <src> <dest>
: 添加连接wml start|s
: 开启 wmlwml list|ls
: 显示全部的连接wml rm <linkId>
: 删除一个连接,传递 all
能够删除全部连接wml enable|e
: 启用一个连接,传递 all
一键启用全部连接wml disable|d
: 禁用一个连接,传递 all
一键禁用全部连接watchman watch-del-all
: 修改 .watchmanconfig
以后须要清空 watchman 缓存这是个人习惯,写脚本能提升工做效率:web
{
"scripts": {
"dev": "wml start",
// yarn wml:add <dest>
"wml:add": "wml add ./",
// 修改 `.watchmanconfig` 以后须要清空 watchman 缓存
"wml:clean":"watchman watch-del-all",
},
}
复制代码
你可能为了演示你的模块,而把演示项目放在模块项目中,这也很常见的。咱们须要作一下配置:npm
一、修改 package.jsonjson
{
"name": "zhiliao",
"scripts": {
"dev": "wml start",
"wml:add": "wml add ./ ./Example/node_modules/zhiliao/",
// 修改 `.watchmanconfig` 以后须要清空 watchman 缓存
"wml:clean":"watchman watch-del-all",
},
}
复制代码
二、配置 .watchmanconfig 文件把 Example 文件夹忽略掉
{
"ignore_dirs": [
".git",
"node_modules",
"yarn-error.log",
"yarn.lock",
"README.md",
"Example"
]
}
复制代码
本文首发于我的博客:youngjuning.js.org/
做者微信 | 赞扬做者 |
---|---|
![]() |
![]() |