如何发布修改现有插件的vue js插件
How to publish a vue js plugin that modifies an existing plugin
我正在尝试创建一个插件,该插件利用来自另一个 Vuejs 插件 (Vuetify) 的组件。基本上,我有一些通用组件想与我们公司共享多个应用程序。
我认为这只是一个问题:
- 为共享组件创建 github 存储库
- 编写插件
- 通过
npm install
引用消费应用中的repo
插件的要点如下:
// src/index.js <-- package.json/main is set to "src"
import MyComponent from "./MyComponent.vue";
import * as api from "./api";
export default function install(Vue) {
Vue.component("myComponent", MyComponent );
Vue.prototype.$myApi = api;
}
目前,我看到的行为是:
好
- 插件
install
功能正在执行
- 附加到 Vue.prototype 的
api
中的功能在应用程序组件中可用
my-component
在应用程序中可用并呈现标记
不好
$myApi
和 Vuetify 组件 在 my-component
的应用程序实例中不可用
如果我将相同的文件复制到应用程序中并更改我的导入,一切都会按预期进行。所以,我现在想知道我是否遗漏了有关通过外部模块共享代码的内容。
我已经尝试过这些替代方法来解决同样的问题:
- 使用
npm link
到link应用程序的插件模块
- 手动,使用
mklink
(Windows sym link) to link plugin module to node_modules in the app folder
- 使用插件模块的长相对路径引用:从“../../../my-plugin”导入 MyPlugin
我已经把这个问题搁置了一段时间,但对于任何想知道的人来说,问题在于使用单文件组件和 webpack 不编译外部模块中的组件。
我有两个选择:
- 不要使用单一文件组件。即:只需使用
.js
而不是 .vue
。我见过像 Vuetify.js 这样的库采用这种方法
- 编译library模块中的.vue文件,并将其包含在source如./dist文件夹中。
我正在尝试创建一个插件,该插件利用来自另一个 Vuejs 插件 (Vuetify) 的组件。基本上,我有一些通用组件想与我们公司共享多个应用程序。
我认为这只是一个问题:
- 为共享组件创建 github 存储库
- 编写插件
- 通过
npm install
引用消费应用中的repo
插件的要点如下:
// src/index.js <-- package.json/main is set to "src"
import MyComponent from "./MyComponent.vue";
import * as api from "./api";
export default function install(Vue) {
Vue.component("myComponent", MyComponent );
Vue.prototype.$myApi = api;
}
目前,我看到的行为是:
好
- 插件
install
功能正在执行 - 附加到 Vue.prototype 的
api
中的功能在应用程序组件中可用 my-component
在应用程序中可用并呈现标记
不好
$myApi
和 Vuetify 组件 在my-component
的应用程序实例中不可用
如果我将相同的文件复制到应用程序中并更改我的导入,一切都会按预期进行。所以,我现在想知道我是否遗漏了有关通过外部模块共享代码的内容。
我已经尝试过这些替代方法来解决同样的问题:
- 使用
npm link
到link应用程序的插件模块 - 手动,使用
mklink
(Windows sym link) to link plugin module to node_modules in the app folder - 使用插件模块的长相对路径引用:从“../../../my-plugin”导入 MyPlugin
我已经把这个问题搁置了一段时间,但对于任何想知道的人来说,问题在于使用单文件组件和 webpack 不编译外部模块中的组件。
我有两个选择:
- 不要使用单一文件组件。即:只需使用
.js
而不是.vue
。我见过像 Vuetify.js 这样的库采用这种方法 - 编译library模块中的.vue文件,并将其包含在source如./dist文件夹中。