2016-07-02 60 views
7

Sto usando vue-cli per impalcare un'app Vue.js + Webpack e sono confuso su come, come esempio di base, includere qualcosa come Zurb Foundation.Webpack: come posso includere il css di un modulo nodo?

Ho installato le dipendenze e caricatori, come sass-loader e css-loader richiesti, ma sono solo confuso su un livello fondamentale di capire come si possa configurare Webpack per compilare ed includere, ad esempio node_modules/foundation-sites/scss/foundation.scss

Nel mio webpack config ho:

module: { 
    loaders: [ 
    { 
     test: /\.scss$/, 
     loaders: ["style", "css", "sass"], 
     include: projectRoot 
    } ... 

Nella mia base componente App.vue ho:

<style src="./scss/app.scss" lang="scss"></style> 

E nella mia app.scss mi hanno cercato, inutilmente:

@import '~foundation-sites/scss/foundation.scss'; 

(tra molti altri tentativi sintatticamente corretti che ha generato errori)

credo che mi manca qualcosa di fondamentale nel modo in cui funziona con Webpack pacchetti npm o bower. Qualsiasi direzione sarebbe molto apprezzata in quanto sembra essere un semplice problema senza una risposta chiara che riesco a trovare.

La copia dei file richiesti da node_modules sembra una soluzione illogica o non altrettanto ideale.

+0

Credo che tu abbia bisogno (o importare forse, non l'ho provato) .scss in javascript. Vedi i [documenti del pacchetto web] (https://webpack.github.io/docs/stylesheets.html). Il js viene quindi raggruppato (imballato, se necessario) con il js blob. Quando js require() viene chiamato su .scss in codice, webpack metterà lo stile sulla pagina.no style src = tag affatto – user01

+0

hm, nel mio 'main.js' ho provato' require ("! style! css! sass! ../ node_modules/foundation-sites/scss/foundation.scss"); ' che compila ma non carica ancora alcuno stile (né sembra ideale in termini di dover dichiarare esplicitamente il percorso?). O ho frainteso? – waffl

+0

non sono sicuro che sia lo stesso con css ma io uso temi per sweetalert come quello: require ('sweetalert/dist/sweetalert.css') require ('sweetalert/themes/google/google.css') e ovviamente tu ho bisogno di un caricatore destro nella configurazione del pacchetto web – lukpep

risposta

5

Non ho modificato nulla sulla configurazione del mio Webpack. L'ho fatto così:

Nota: i componenti del mio progetto sono in una cartella 'src/components' e il mio app.scss direttamente nella cartella src. Sto usando i siti di fondazione v6.2.2 e vue-cli 2.2.0.

In un componente di base ho questo:

<style src="../app.scss" lang="scss"></style> 

Ora, in questo app.scss ho incollato tutto da node_modules/Fondazione siti/SCSS/impostazioni/_settings.scss per consentire la personalizzazione. Si dovrà cambiare una riga c'è:

@import 'util/util';

dovrebbe diventare:

@import '~foundation-sites/scss/util/util';

Infine aggiungere due righe nella parte inferiore del vostro app.scss:

@import '~foundation-sites/scss/foundation.scss'; 
@include foundation-everything; 

Questo dovrebbe coprire il tuo css.

Tuttavia è probabile che sia necessario fare qualcosa anche su javascript, perché i componenti javascript di Foundation richiedono un'inizializzazione. Non l'ho ancora fatto, ma potrebbe essere utile: http://forum.vuejs.org/topic/893/vue-js-foundation-6/6

+0

Grazie, stavo lottando un po 'con questo. Risposta perfetta! – k00k