问题描述
有没有办法使用 yarn serve
(可能使用 webpack / vuetify-loader)在本地 Vuetify 应用程序的本地 npm 依赖项上发生热重载?
业务案例
我们有一些常用的 Vuetify 组件,我想通过“常用组件”Vue 插件公开这些组件,并允许我们所有的 Vuetify 应用程序提取这些常用组件。我可以通过打包插件并创建依赖项并推送到私有 npm 存储库或提交/推送到私有 git 存储库来做到这一点。问题出在开发周期和开发经验上。
在本地开发环境中对插件进行典型的开发更改需要:
- (common-components)
yarn build
(创建 dist/common-components.umd.js) - (common-components)(部署到私有 npm 代表或提交/推送到 git 仓库)
- (应用程序 A)
yarn upgrade common-components
拉取最新的 - (申请 A)
yarn serve
必须有比这更好的开发周期,对吗?还是我真正的问题是我们需要更好地将插件与我们的应用程序分离?
我希望的解决方案,但失败了
yarn-link 或 npm-link
我能够让它工作,但 NPM 依赖项仍然解析为文件夹的 package.json,其中包含 "main": "dist/common-components.umd.js"
。这需要我执行一个 yarn build
来删除文件并重建它。删除文件后,当前以 yarn serve
运行的“应用程序 A”会中断且无法恢复。我必须关闭服务器并再次执行 yarn serve
。
解决方法
感谢yalc,我不久前已经完成了这种设置。
本质上是:
- 处理你自己的包,设置它(如果我没记错的话,用
yalc link
) - 当对包进行更新时,我们让它像使用 linter 一样自动
yalc publish --push --changed
- 你可以使用 pre-push git hook 来对你的包进行 babelify
- 在宿主主应用程序上,我们运行了
nodemon
以检查yalc
是否发布了任何更改,如果是,只需重新加载应用程序 - 仍然在主应用程序上,我们在
pull
上使用了一个 git 钩子,让它获取yalc.lock
商店(使用yalc update
)上的最新更改
我不久前做过,所以我记不太清楚了,但据我所知它运行得很好,只需要运行 2 个服务器(一个在要发布的包上,另一个在您的主应用程序上)获取更改)在您的其他服务之上。仍然比 yarn 或 npm link
s 更好。