如何发布带有 Vuex 模块的 Vue.js NPM 包?
Posted
技术标签:
【中文标题】如何发布带有 Vuex 模块的 Vue.js NPM 包?【英文标题】:How to publish an Vue.js NPM package with a Vuex module? 【发布时间】:2017-12-29 20:55:58 【问题描述】:我正在开发一些想要放入 NPM 包中的 Vue 组件。我面临的问题是我不知道如何发布依赖于 Vuex 模块的组件。
我已经将这个组件库所需的所有代码整齐地放在一个单独的 Vuex 模块中,但是当有人导入我的包时,我如何注册我的模块?
我想一个好的开始是创建一个插件,但我仍然需要检查 Vuex 实例并以某种方式注册我的模块。
我看过很多关于如何发布 Vue 组件的教程,但没有看到更复杂的教程。
有什么建议吗?
【问题讨论】:
【参考方案1】:对于任何试图解决这个问题的人来说,这也是一个有用的参考:
https://forum.vuejs.org/t/how-to-create-an-npm-package-of-a-vue-js-project-which-uses-vuex/14706/2
这里要注意的一个关键点是:
store.registerModule('desiredModuleName', yourModule)
它在 API 中有点隐藏,但是只要用户通过他们的商店,这允许您注册您的 Vuex 模块。
https://vuex.vuejs.org/en/modules.html#dynamic-module-registration
【讨论】:
【参考方案2】:您应该能够只要求用户将您的 vuex 模块(将其作为您的包公共 api 的一部分公开)添加到您的模块中。也许这也可以作为安装功能的一部分来完成(如果您使用插件方法)。
【讨论】:
是的,但如果可能的话,我希望能自动执行此操作。我想这是真正的问题。如何自动化这个。使用插件,您可以连接组件,因为我们有一个Vue.component
挂钩来注册组件,但 Vuex 模块并非如此。
您必须要求用户通过商店...我看不出有什么办法。也就是说,这是 redux 世界的常见做法:例如,请参阅 redux-form。以上是关于如何发布带有 Vuex 模块的 Vue.js NPM 包?的主要内容,如果未能解决你的问题,请参考以下文章
带有 vuex-oidc 的 Vue.js SPA 在发布版本上有重定向循环
使用 Jest 测试 NUXT.js 和 Vue.js 应用程序。获取“在 mapState() 中找不到 [vuex] 模块命名空间”和“[vuex] 未知操作类型”