vue.jsを使って以下の様な画面を作成しました。(画面A)
このvueファイルをvue-cli-serviceを使って、target=wc でビルドすると、デザインが崩れてしまいます。(画面B)
ドキュメントの一番上にスタイルが指定されており、web componentsの中の要素に適用されていないのが原因である事は分かります。
ですので、以下の様にcssをカットして、web componentsの中に直接ペーストすると正常な外見になります。
ソースコードで言うと、vueファイルのこの部分の指定が原因かと思います。この部分は'vue-cool-select'という外部モジュールに指定 されております。
Vue.use(VueSelect, { theme: 'material-design' });
この場合'vue-cool-select'モジュールの作者に修正・対応をお願いするのが一番確実だとは思うのですが、こっち側で上記のVue.use
の書き方を変える事でweb componetnsに対応する方法はありませんでしょうか?
'vue-cool-select'モジュールに限った話であれば$elem を直に書き換えればどうとでもなると思いますが、Vue.use
を使っているモジュールをweb componentsでビルドする時はこの様に書き換えればいい。という共通のやり方を教えて欲しいです。
グローバルのVueではなく継承しているインスタンスにuseすればいい と思って、以下のmountedメソッドの中を書き換えてみたのですがエラーになってしまいました。
export default Vue.extend({ mounted: function () { this.use(VueSelect, {theme: 'material-design'});//エラー。thisにuseが生えていない }, 略
こちら、再現出来るソースコードを用意しました。
https://github.com/fushihara/vue-cli-q-20190506
こちらのレポジトリからgit clone
して、npm install
する事で準備が出来ます。
その後、npm run serve
を実行すると正常なデザインの画面Aが表示されますが、./node_modules/.bin/vue-cli-service build --target wc --mode development --name test-vue --dest "build-result-dev-wc--vue" ./src/test-vue.vue
を実行し、./build-result-dev-wc--vue/demo.html
を開くと、スタイルが適用されていない画面Bが表示されます。
あなたの回答
tips
プレビュー