如何发布带有 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] 未知操作类型”

Vue小模块之功能全面的表格实现带有数组输入的表单

如何发布 Vue.js 组件库?

Vue.js / Vuex + axios 发送多个 PUT 请求

Vue.js入门Vuex