Je veux utiliser le framework css dans mon projet svelte, dans ce cas c'était uikit.
Je l'avais installé avec du yarn add uikit
Et bien sûr, je dois importer le fichier css, avec
@import '../node_modules/uikit/dist/css/uikit.min.css"
Mais ça ne marche pas, où que j'importe ça
N'est-ce pas encore disponible?
Ou est-ce que je devrais l'installer avec yarn, et après cela, je dois copier le fichier requis vers l'extérieur de node_modules, tout comme [cette solution]? ( Comment ajouter le css de node_modules à template.html dans Svelte )
Je pense que ce n'est pas une restriction uniquement pour uikit, mais plutôt la façon dont nous importons un fichier css tiers dans node_modules dans l'application svelte
7 Réponses :
Pas familier avec le kit d'interface utilisateur, mais d'après les informations fournies, il me semble que vous devriez l'importer (en utilisant @import
) dans un fichier scss
ou sass
, pas dans un fichier css. L'utilisation de @import
dans un fichier css n'est pas interprétée, mais comme vous pouvez le voir, elle apparaît simplement dans votre navigateur en tant que référence à un fichier dans le répertoire node_modules
, qui n'est pas disponible pour le navigateur.
En supposant que vous utilisez un rollup, pour traiter les fichiers scss
, vous devrez probablement ajouter la dépendance svelte-preprocess-sass
pour que le rollup prenne en charge sass (et scss).
oui, j'utilise le rollup. Mais es-tu sûr que je devrais utiliser sass? Donc, dans svelte, nous devons importer un fichier css dans un fichier sass pour qu'ils fonctionnent? Cela semble un inconvénient
il y a un moyen d'ajouter des fichiers css avec postcss et rollup, mais cela semble un peu moins pratique lengstorf.com/code/learn-rollup-css
Donc, si vous voulez utiliser UIKit, j'irais regarder les informations sur la page d'accueil.
À partir de la section de balisage HTML dans l'introduction sur le site UIKit:
Vous devez ajouter:
<link rel="stylesheet" href="../node_modules/uikit/dist/css/uikit.min.css" />
à la tête de votre fichier html.
Donc, dans votre cas, vous pouvez pointer vers votre dossier node_modules comme
<link rel="stylesheet" href="css/uikit.min.css" />
dans votre modèle.
Est-ce que c'est ce que vous vouliez dire par "Utilisation de la balise dans index.html"? Ensuite, je pense que nous aurons peut-être besoin de voir du code pour mieux répondre à votre question.
Sur votre capture d'écran, je vois que vous diffusez votre page, mais quel est votre dossier «racine» ou «public»? Le chemin que vous avez défini pour le fichier css est probablement incorrect par rapport à votre racine.
malheureusement, mon code est le même avec votre réponse
Le logiciel que vous utilisez pour diffuser votre code ne vous permettra probablement pas de sortir du dossier / public. Je créerais donc un dossier / css dans public et y copierais le fichier uikit. Et mettez à jour votre balisage dans index.html.
npm install -D rollup-plugin-css-only
css({ output: "public/uikit.css" })
<link rel="stylesheet" href="uikit.css" />
import "../node_modules/uikit/dist/css/uikit.min.css";
La solution n'est pas la mienne. Tous les crédits vont à ce gars (vers 6h00 dans la vidéo): https://www.youtube.com/watch?v=RBQg89ak_NY
C'est une bonne réponse (qui devrait être acceptée, d'ailleurs). Cela vaut peut-être la peine de montrer les morceaux de code pour que ce soit beaucoup plus facile à comprendre. Ou, au moins, un lien vers ces éléments dans l'exemple de dépôt. Par exemple: github.com/hidjou/classsed-svelte-tutorial/blob/master/… .
J'espère que quelqu'un verra cela même si je poste beaucoup plus tard. Je me demande quel est l'intérêt d'installer via npm au lieu de simplement copier les fichiers css et js minifiés et de les stocker vous-même dans votre dossier statique. Puisque vous devez les lier dans le fichier template.html ou index.html de toute façon, pourquoi ne pas simplement copier les fichiers bruts eux-mêmes et vous n'avez pas à importer le css dans le script de vos fichiers .svelte
@Jeff Je pense que la raison principale serait la maintenabilité - dans environ 2 ans lorsque vous devez mettre à jour les dépendances, vous ne vous souviendrez peut-être pas de copier / coller le code css mis à jour dans "public / global.css" - si vous le faites de cette façon, vous pouvez simplement mettre à jour votre dépendance dans package.json
et être terminé.
Merci @GavinR je n'avais pas pensé à cette partie
actuellement, cela ne semble plus fonctionner. rollup se plaint d'une erreur selon laquelle j'importe un fichier non javascript. Aucun conseil?
Cela fonctionne bien si le .css importé ne fait pas référence aux images, auquel cas les images ne seront pas trouvées. Exemple d'importation de datatables.net-dt / css / jquery.dataTables.min.css renvoie [08:27:47] 404 ─ 0,39 ms ─ /images/sort_asc.png
J'ai eu du mal à suivre la réponse de Marvelous Walrus, alors voici une version plus explicite des mêmes étapes.
Rollup est le bundler utilisé par svelte. (Vous connaissez peut-être webpacker en tant que bundler).
Étape 1: Installez le plugin css rollup:
<script> // build/extra.css is fed from css files imported here import "../node_modules/bootstrap/dist/css/bootstrap.min.css"; import "../node_modules/bootstrap/dist/css/bootstrap-grid.min.css";
Étape 2: modifier rollup.config.js
vous devez importer le plugin que vous venez d'installer au début de rollup.config.js
:
npm install bootstrap
et plus bas dans le fichier, vous devez trouver le tableau des plugins et ajouter un nouveau sur appelé css. Par exemple, je l'ai inséré avant le plugin svelte
, qui ressemble à ceci:
<link rel="icon" type="image/png" href="/favicon.png" /> <link rel="stylesheet" href="/build/extra.css" /> <link rel="stylesheet" href="/global.css" /> <link rel="stylesheet" href="/build/bundle.css" />
Lorsque le rollup le fait, il lit tous les fichiers css importés par vos composants, les combine en un seul et les écrit dans public/build/extra.css
Étape 3: éditez public/index.html
Ajoutez le lien vers le nouveau fichier css. Pour moi, cela ressemblait à ceci:
plugins: [ css({ output: "public/build/extra.css" }), svelte({ ...
Étape 4: profitez!
Vous êtes maintenant prêt à utiliser les fichiers css de vos packages npm installés. par exemple j'ai ajouté bootstrap par
import css from "rollup-plugin-css-only";
puis recherchez les fichiers css que je souhaite utiliser (ils se trouvaient dans / node_modules / bootstrap / dist / css /) et importez-les au début de App.svelte:
npm install -D rollup-plugin-css-only
Questions ouvertes
Rollup ne semble pas gérer les sourcemaps mentionnés dans bootstrap.min.css et bootstrap-grid.min.css. Ainsi, lorsque j'ouvre les outils de développement, je reçois un avertissement indiquant que je ne peux pas charger les sourcemaps
Avec Parcel comme bundler, vous pouvez mettre dans votre index.js (point d'entrée)
@import 'milligram/dist/milligram.min.css'
Pour quiconque s'intéresse à cela, j'utilise cette solution soignée:
rollup-plugin-css-only
<link rel="stylesheet" href="/build/base.css" />
Ou
<script> import "../node_modules/uikit/dist/css/uikit.min.css"; </script>
rollup.config.js
import css from "rollup-plugin-css-only"; export default { plugins: [ css({ output: function (styles, styleNodes) { // Filter out any source map imports let reg = new RegExp(/^(\/*).*(.map) ?(\*\/)$/gm); writeFileSync("public/build/base.css", styles.replace(reg, "")) } }), ] }
App.svelte
npm i -D rollup-plugin-css-only
index.html
yard add -D rollup-plugin-css-only
Avec Svelte v.3.24.0, il est possible d'importer directement du CSS dans la balise de style de votre composant:
<style lang="scss" global> @import '../node_modules/my-package/cssfile'; @import '../node_modules/my-package/scssfile.scss'; </style>
Nous n'avons donc pas besoin d'installer de plug-ins Rollup supplémentaires ici.