Bower y devDependencias vs dependencias

159

Ejecuté 'yo angular' y luego me di cuenta de que instala 1.0.8, desinstalé los componentes angulares, sin embargo, el archivo original bower.json tenía simulacros angulares y escenario angular en 'devDependencies' cuando volví a agregar todos los 1.2. Componentes 0-rc.2 angular-mocks y angular-escenario bajo dependencias en lugar de devDependencies.

Tengo curiosidad por saber cómo se usa devDependencies y si debería molestarme en arreglarlo manualmente o dejarlo como está. ¿Hay alguna manera de especificar en la CLI de Bower cómo marcar algo como una dependencia de desarrollo?

Después del archivo de ediciones:

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

Antes de las ediciones:

{
    "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
fuente

Respuestas:

284

devDependencies son para los scripts relacionados con el desarrollo, por ejemplo, pruebas unitarias, scripts de empaquetado, generación de documentación, etc.

dependencies son necesarios para el uso de producción, y se supone que también son necesarios para el desarrollo.

Incluirlo devDependenciesdentro dependencies, como lo tienes, no será dañino; el módulo solo agrupará más archivos (bytes) durante la instalación, consumiendo más recursos (innecesarios). Desde un punto de vista purista, estos bytes adicionales podrían ser perjudiciales, solo dependen de su perspectiva.

Para arrojar algo de luz, mirando bower help install, los módulos enumerados a continuación devDependenciespueden omitirse durante la instalación del módulo a través de -po --production, por ejemplo:

bower install angular-latest --production

Esta es la forma recomendada de realizar una instalación para cualquier cosa que no sea una plataforma de desarrollo.

Por el contrario, no hay forma de omitir los módulos enumerados a continuación dependencies.


A partir de [email protected] (ver la última fuente de bower ), bower helpproduce:

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.

y además, bower help installrendimientos (ver la última fuente ):

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.
zamnuts
fuente
¿Hay alguna manera de hacer que Bower elimine automáticamente los deps innecesarios cuando los elimina de bower.json?
FutuToad
1
@FutuToad, no lo he probado, pero un bower update(para obtener la última versión con los viejos deps eliminados) seguido de un bower prune(elimina paquetes locales extraños) podría hacer el truco.
zamnuts
1
@MichaelTrouw esto no es posible ya que la estructura del directorio es fundamental. Sugeriría realizar una instalación de producción en otro directorio en su máquina de desarrollo (u otro entorno de ensayo) cargando una instantánea de eso a través de FTP al destino.
zamnuts
1
@Edgar su código de producción NO debería depender de su devDependencies, y por lo tanto no es parte de su código de arranque, lógica, ni ningún otro aspecto de su aplicación mientras se ejecuta normalmente. Solo si intenta ejecutar tareas relacionadas con el desarrollo (scripts de compilación, conjuntos de pruebas, etc.), obtendrá el módulo no encontrado. Si necesita más información, haga una nueva pregunta sobre SO. Por último, considere migrar lejos de Bower, ya que está en desuso: github.com/bower/bower/issues/2298
zamnuts