Bower et devDependencies vs dépendances

159

J'ai couru 'yo angular' et réalisé par la suite qu'il installe la 1.0.8, j'ai désinstallé les composants angulaires, mais le fichier bower.json d'origine avait angular-mocks et angular-scenario sous 'devDependencies' quand je rajoute tout le 1.2. 0-rc.2 composants angular-mocks et angular-scenario sous dépendances au lieu de devDependencies.

Je suis curieux de savoir comment devDependencies est utilisé et si je devrais prendre la peine de le réparer manuellement ou de le laisser tel quel. Existe-t-il un moyen de spécifier sur la CLI de bower comment marquer quelque chose comme une dépendance de développement?

Après les modifications du fichier:

{
    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: { }
}

Avant les modifications:

{
    "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"
    }
}
Gary
la source

Réponses:

284

devDependencies sont pour les scripts liés au développement, par exemple les tests unitaires, les scripts d'empaquetage, la génération de documentation, etc.

dependencies sont nécessaires pour une utilisation en production et supposés également nécessaires pour le développement.

Y compris à l' devDependenciesintérieur dependencies, comme vous l'avez, ne sera pas nuisible; le module regroupera simplement plus de fichiers (octets) pendant l'installation - consommant plus de ressources (inutiles). D'un point de vue puriste, ces octets supplémentaires pourraient être préjudiciables, cela dépend juste de votre point de vue.

Pour faire la lumière, en regardant bower help install, les modules listés sous devDependenciespeuvent être omis lors de l'installation du module via -pou --production, par exemple:

bower install angular-latest --production

C'est la méthode recommandée pour effectuer une installation pour autre chose qu'une plate-forme de développement.

Au contraire, il n'y a aucun moyen d'omettre les modules répertoriés sous dependencies.


À partir de [email protected] (voir la dernière source de bower ), bower helpdonne:

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.

et plus loin, les bower help installrendements (voir la dernière source ):

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.
noix de Grenoble
la source
y a-t-il un moyen d'obtenir bower pour supprimer automatiquement les déps inutiles lorsque vous les supprimez de bower.json?
FutuToad
1
@FutuToad, je ne l'ai pas essayé mais un bower update(pour obtenir la dernière version avec l'ancien deps supprimé) suivi d'un bower prune(supprime les paquets locaux superflus) pourrait faire l'affaire.
zamnuts
1
@MichaelTrouw ce n'est pas possible car la structure des répertoires est fondamentale. Je suggérerais d'effectuer une installation de production dans un autre répertoire sur votre machine de développement (ou un autre environnement de préparation) en téléchargeant un instantané de cela via FTP sur la cible.
zamnuts
1
@Edgar, votre code de production ne doit PAS dépendre de votre devDependencies, et ne fait donc pas partie de votre code d'amorçage, de votre logique ou de tout autre aspect de votre application lorsqu'elle s'exécute normalement. Ce n'est que si vous essayez d'exécuter des tâches liées au développement (scripts de construction, suites de tests, etc.), vous obtiendrez le module introuvable. Si vous avez besoin de plus d'informations, veuillez poser une nouvelle question sur SO. Enfin, envisagez de migrer loin de bower car il est à peu près obsolète: github.com/bower/bower/issues/2298
zamnuts