Bower e devDipendenze vs dipendenze


159

Ho eseguito "yo angular" e in seguito mi sono reso conto che installa 1.0.8, ho disinstallato i componenti angolari, tuttavia il file originale bower.json aveva simulazioni angolari e scenari angolari in "devDependencies" quando ho aggiunto nuovamente 1.2. Componenti 0-rc.2 simulazioni angolari e scenari angolari in dipendenze anziché devDependencies.

Sono curioso di sapere come viene utilizzato devDependencies e se dovrei preoccuparmi di risolverlo manualmente o partire così com'è. Esiste un modo per specificare nella CLI di Bower come contrassegnare qualcosa come dipendenza da sviluppatore?

Dopo aver modificato il file:

{
    name: "Angular",
    version: "0.0.0",
    dependencies: {
        json3: "~3.2.4",
        jquery: "~1.9.1",
        bootstrap-sass: "~2.3.1",
        es5-shim: "~2.0.8",
        angular-mocks: "1.2.0-rc.2",
        angular-sanitize: "1.2.0-rc.2",
        angular-resource: "1.2.0-rc.2",
        angular-cookies: "1.2.0-rc.2",
        angular: "1.2.0-rc.2",
        angular-scenario: "1.2.0-rc.2"
    },
    devDependencies: { }
}

Prima delle modifiche:

{
    "name": "Angular",
    "version": "0.0.0",
    "dependencies": {
        "angular": "~1.0.7",
        "json3": "~3.2.4",
        "jquery": "~1.9.1",
        "bootstrap-sass": "~2.3.1",
        "es5-shim": "~2.0.8",
        "angular-resource": "~1.0.7",
        "angular-cookies": "~1.0.7",
        "angular-sanitize": "~1.0.7"
    },
    "devDependencies": {
        "angular-mocks": "~1.0.7",
        "angular-scenario": "~1.0.7"
    }
}

Risposte:


284

devDependencies sono per gli script relativi allo sviluppo, ad esempio test unitari, script di packaging, generazione di documentazione, ecc.

dependencies sono richiesti per l'uso in produzione, e anche per gli sviluppatori.

Includere l' devDependenciesinterno dependencies, come lo hai, non sarà dannoso; il modulo raggrupperà solo più file (byte) durante l'installazione, consumando più risorse (non necessarie). Da un POV purista, questi byte extra potrebbero essere dannosi, dipende solo dalla tua prospettiva.

Per fare luce, osservando bower help install, i moduli elencati di seguito devDependenciespossono essere omessi durante l'installazione del modulo tramite -po --production, ad esempio:

bower install angular-latest --production

Questo è il modo consigliato per eseguire un'installazione per qualcosa di diverso da una piattaforma di sviluppo.

Al contrario, non è possibile omettere i moduli elencati di seguito dependencies.


A partire da bower@1.2.7 (vedi la fonte più recente di bower ), si bower helpottiene:

Usage:

    bower <command> [<args>] [<options>]

Commands:

    cache                   Manage bower cache
    help                    Display help information about Bower
    home                    Opens a package homepage into your favorite browser
    info                    Info of a particular package
    init                    Interactively create a bower.json file
    install                 Install a package locally
    link                    Symlink a package folder
    list                    List local packages
    lookup                  Look up a package URL by name
    prune                   Removes local extraneous packages
    register                Register a package
    search                  Search for a package by name
    update                  Update a local package
    uninstall               Remove a local package

Options:

    -f, --force             Makes various commands more forceful
    -j, --json              Output consumable JSON
    -l, --log-level         What level of logs to report
    -o, --offline           Do not hit the network
    -q, --quiet             Only output important information
    -s, --silent            Do not output anything, besides errors
    -V, --verbose           Makes output more verbose
    --allow-root            Allows running commands as root

See 'bower help <command>' for more information on a specific command.

e inoltre, i bower help installrendimenti (vedi l' ultima fonte ):

Usage:

    bower install [<options>]
    bower install <endpoint> [<endpoint> ..] [<options>]

Options:

    -F, --force-latest      Force latest version on conflict
    -h, --help              Show this help message
    -p, --production        Do not install project devDependencies
    -S, --save              Save installed packages into the project's bower.json dependencies
    -D, --save-dev          Save installed packages into the project's bower.json devDependencies

    Additionally all global options listed in 'bower help' are available

Description:

    Installs the project dependencies or a specific set of endpoints.
    Endpoints can have multiple forms:
    - <source>
    - <source>#<target>
    - <name>=<source>#<target>

    Where:
    - <source> is a package URL, physical location or registry name
    - <target> is a valid range, commit, branch, etc.
    - <name> is the name it should have locally.

c'è un modo per far sì che il bower rimuova automaticamente i deps non necessari quando li rimuovi da bower.json?
FutuToad

1
@FutuToad, non l'ho provato ma un bower update(per ottenere l'ultima versione con i vecchi deps rimossi) seguito da un bower prune(elimina pacchetti locali estranei) potrebbe fare il trucco.
Zamnuts,

1
@MichaelTrouw questo non è possibile poiché la struttura delle directory è fondamentale. Suggerirei di eseguire un'installazione di produzione in un'altra directory sulla tua macchina di sviluppo (o altro ambiente di gestione temporanea) caricando un'istantanea di ciò tramite FTP sulla destinazione.
Zamnuts,


1
@Edgar il tuo codice di produzione NON dovrebbe dipendere dal tuo devDependencies, e quindi non fa parte del tuo codice bootstrap, della logica, né di qualsiasi altro aspetto della tua applicazione durante il normale funzionamento. Solo se si tenta di eseguire attività correlate allo sviluppo (script di compilazione, suite di test, ecc.), Il modulo non verrà trovato. Per ulteriori informazioni, si prega di porre una nuova domanda su SO. Infine, considera di migrare lontano dal pergolato poiché è praticamente deprecato: github.com/bower/bower/issues/2298
zamnuts
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.