Come cambiare la cartella dei componenti predefiniti di bower?


475

Sto realizzando un nuovo progetto che utilizza Bower di Twitter. Ho creato un component.jsonper mantenere tutta la mia dipendenza come jquery. Quindi eseguo bower installche installa tutto in una cartella denominata components. Ma devo installare i componenti in una cartella diversa, ad es public/components.

Ho provato a modificare i miei componenti.json in:

{
  "name": "test",
  "version": "1.0.0",
  "directory": "public/",
  "dependencies": {
    "jquery": "*"
  }
}

o:

{
  "name": "test",
  "version": "1.0.0",
  "componentsDirectory": "public/",
  "dependencies": {
    "jquery": "*"
  }
}

come mostrato in https://github.com/twitter/bower/pull/94 ma non funziona.

Risposte:


930

Creare un file di configurazione di Bower.bowerrc nella root del progetto (al contrario della tua home directory) con il contenuto:

{
  "directory" : "public/components"
}

Correre bower install nuovo.


4
Registro modifiche Posso solo vedere The value of the json property from .bowerrc is no longer usede suppongo che tutto sia OK con "directory"proprietà. Giusto? github.com/bower/bower/blob/master/CHANGELOG.md
Sergey Kishenin

11
Questo non funziona per me. Funziona in .bowerrc, ma non in bower.json. Sembra una caratteristica così basilare ...
elliottregan,

148
Sono curioso di sapere perché questo non dovrebbe essere inserito nel file bower.json. Soprattutto se si tratta comunque di un'impostazione per progetto.
Hayden

8
Sulla base dei documenti, deve essere in .bowerrc, non in bower.json. Strano ... bower.io/#custom-install-directory
joemfb

20
In Windows, per creare un file che inizia con ".", È sufficiente creare il file con un "." Finale. In altre parole, chiamalo semplicemente ".bowerrc".
PeteK68

76

Oltre alla modifica .bowerrcper configurare il percorso di installazione predefinito, è anche possibile impostare percorsi di installazione personalizzati per diversi tipi di file.

Esiste un pacchetto nodo chiamato bower-installer che fornisce un singolo comando per la gestione di percorsi di installazione alternativi.

correre npm install -g bower-installer

Configura bower.json

{
  "name" : "test",
  "version": "0.1",
  "dependencies" : {
    "jquery-ui" : "latest"
  },
  "install" : {
    "path" : {
      "css": "src/css",
      "js": "src/js"
    },
    "sources" : {
      "jquery-ui" : [
        "components/jquery-ui/ui/jquery-ui.custom.js",
        "components/jquery-ui/themes/start/jquery-ui.css"
      ]
    }
  }
}

Esegui il seguente comando: bower-installer

Questo verrà installato components/jquery-ui/themes/start/jquery-ui.csssu ./src/css, ecc


4
Sembra promettente ma la bower_componentsdirectory è ancora creata e popolata. :(
Ben

quale versione di Bower?
lfender6445,

sembra essere la natura del pacchetto. potresti aprire un problema qui github.com/blittle/bower-installer/issues o scrivere uno script bash per rimuovere la directory dopo l'installazione.
lfender6445

1
Penso che non abbia senso. Non voglio un pacchetto che scarichi ancora il repository git completo e le dipendenze e poi copmi semplicemente file specifici per me ... Posso premere Ctrl + C da solo. Speravo che scaricasse solo file specifici per me.
Alendorff,

sì, ti sento. in questo caso ho solo un .bowerrc e punto a public / bower o public / vendor per rendere semplice il progetto.
lfender6445

61

Ho avuto lo stesso problema su Windows 10. Questo è ciò che ha risolto il mio problema

  1. Elimina bower_componentsnella cartella principale
  2. Crea un .bowerrcfile nella radice
  3. Nel file scrivi questo codice {"directory" : "public/bower_components"}
  4. Esegui a bower install

Ora dovresti vedere la cartella bower_components nella tua cartella pubblica


23

Qualcosa che vale la pena menzionare ...

Come notato sopra da altri collaboratori, utilizzando un .bowerrcfile con JSON

{ "directory": "some/path" }

è necessario - TUTTAVIA, potresti riscontrare un problema su Windows durante la creazione di quel file. Se Windows ti dà un messaggio che ti chiede di aggiungere un " nome file ", usa semplicemente un editor di testo / IDE come Notepad ++.

Aggiungi il JSON a un file senza nome, salvalo come .bowerrc : sei a posto!

Probabilmente un presupposto facile, ma spero che questo salvi agli altri il mal di testa inutile :)


18
In Windows, per creare un file che inizia con ".", È sufficiente creare il file con un "." Finale. In altre parole, chiamalo semplicemente ".bowerrc".
PeteK68,

puoi farlo anche con git bash, semplicemente scrivi:echo >> .bowerrc
Leandro RR

7

Prova a mettere il components.jsonfile nella publicdirectory dell'applicazione, anziché nella directory principale, quindi esegui di nuovo bower install... prova questo nella directory home dell'app:

cp components.json public
cd public
bower install

1
sì, può essere un modo, esiste un modo legittimo per farlo? ma continuerò a considerarlo come una risposta.
Adam Ramadhan,

2
potresti scrivere uno script bash bower.shper anteporre la directory in cui vuoi installare, come `public-components.json ', quindi genererebbe i comandi sopra ..
hagope,

2
Entrambe queste risposte sembrano super bizzarre, sicuramente non desiderabili
Jay

-3

Ciao, sono lo stesso problema e risolvo questo modo.

utente windows e vs non è possibile creare il file .bowerrc.

in cmd vai a qualsiasi cartella

installa tutti i pacchetti che contiene il file .bowerrc per esempio

bower install angular-local-storage

questo plugin contiene il file .bowerrc. copialo e vai al tuo progetto e incolla questo file.

e in Visual Studio - Esplora soluzioni - mostra tutti i file e include il file .bowerrc visto dal progetto

risolvo questi modi :)


è possibile utilizzare Cygwino il Cmderterminale per creare il .bowerrcfile.
Francis.TM,

4
Basta creare il file con qualsiasi nome, quindi aprire un PowerShell o un prompt dei comandi e rinominarlo.
TrueWill,

È possibile creare un file dot in Windows specificando il nome file come ".name". - ancora non molte persone lo sanno dopo così tanti anni di disponibilità :)
Alex Paven,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.