Используйте внешнюю таблицу стилей для веб-компонента Vue / Предотвращение встраивания стилей

#vue.js #vue-cli

Вопрос:

Я использую an vue-cli-service для создания веб-компонента. Все стили, на которые ссылается этот компонент, всегда встроены в файл javascript.

 vue-cli-service build --target wc --name component-name  --inline-vue  ./src/components/someComponent.vue
 

Есть ли способ заставить Vue извлечь CSS компонента в отдельный файл вместо того, чтобы вставлять его в dist/component-name.js файл?

В качестве альтернативы, существует ли простой способ разрешить внешним пользователям переопределять стили Shadow DOM?

Ответ №1:

К сожалению, я не верю, что существует автоматический способ сделать это без написания пользовательского плагина webpack. Вам придется перенести CSS вручную.

Если вы используете webpack, вы можете взять все ваши CSS-файлы компонентов и переместить их в отдельный файл.

Оттуда вы можете включить его в свой main.js файл, используя либо a require , либо import :

 import './css/styles.css';
 

Если вы не используете webpack или хотите включать CSS-файлы только в определенные компоненты, вы можете импортировать файл в сам компонент.

Просто создайте <style> блок и импортируйте в него CSS:

 <style>
  @import './css/styles.css';
</style>
 

Вы также можете использовать этот <style> блочный подход в глобальном масштабе, добавив его в свой App.vue файл.

Комментарии:

1. У меня тоже была такая идея. К сожалению, --target wc для создания веб-компонента также используются все внешние файлы, даже неуважительные css.extract vue.config.js .