我想将与UI相关的东西(使其成为独立的库)与其他项目(消费者)分开,以避免代码重复并使UI在不同项目之间保持一致。我不打算将这些软件包发布到NPM,它将仅在我的PC和部署服务器上。
我使用Vue CLI创建了两个Vue项目:producer
和consumer
。 consumer
是我在开发组件以构建整个UI时要消耗producer
的地方。
目前,我可以使用一些东西-producer
具有以下src
结构:
components/
Example1.vue
Example2.vue
index.js
在.vue
文件中,我照常编写Vue组件,在index.js
中导出它们:
export {default as Example1} from './components/Example1';
export {default as Example2} from './components/Example2';
此后,我在npm link
程序包中运行producer
,在npm link producer
程序包中运行consumer
以将其本地链接。
现在在consumer
中,我可以做到
import {Example1} from "producer";
import "producer/dist/ui.css";
Vue.component("ui-example1", Example1);
并使用producer
中的组件。
要开发和使用此设置,我的第一次尝试是运行
vue-cli-service build --target lib --watch --name ui ./src/index.js
vue-cli-service serve
但是 1)我没有在dist目录中获得* .css文件, 2) consumer
无法正常工作并显示ReferenceError: require is not defined
要解决这些错误,我在生产模式下运行生产者的vue-cli-service
:vue-cli-service build --target lib --watch --name ux ./src/index.js --mode production
现在我终于可以在producer
包中使用consumer
组件并导入css文件,但是在producer
中进行修改会在consumer
中刷新整个页面。我想这是因为我在生产模式下构建了依赖项目,现在整个设置对我来说似乎是不正确的。
总结一下: