Dependências vs dependências do Bower e dev


159

Eu executei 'yo angular' e percebi depois que ele instala a 1.0.8, desinstalei os componentes angulares, no entanto, o arquivo bower.json original tinha zombarias angulares e cenário angular em 'devDependencies' quando adiciono novamente todo o 1.2. 0-rc.2 componentes angular-mock e cenário angular em dependências em vez de devDependencies.

Estou curioso para saber como o devDependencies é usado e se devo me preocupar em corrigi-lo manualmente ou sair como está. Existe uma maneira de especificar na CLI do caramanchão como marcar algo como uma dependência de desenvolvedor?

Após o arquivo de edições:

{
    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 das edições:

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

Respostas:


284

devDependencies são para scripts relacionados ao desenvolvimento, por exemplo, testes de unidade, scripts de empacotamento, geração de documentação etc.

dependencies são necessários para uso em produção e assumidos como necessários para o desenvolvedor.

Incluir devDependenciesdentro dependencies, como você o tem, não será prejudicial; o módulo apenas agrupará mais arquivos (bytes) durante a instalação - consumindo mais recursos (desnecessários). De um ponto de vista purista, esses bytes extras podem ser prejudiciais, depende apenas da sua perspectiva.

Para esclarecer bower help install, os módulos listados em devDependenciespodem ser omitidos durante a instalação do módulo via -pou --production, por exemplo:

bower install angular-latest --production

Essa é a maneira recomendada de executar uma instalação para algo diferente de uma plataforma de desenvolvimento.

Pelo contrário, não há como omitir os módulos listados em dependencies.


A partir de bower@1.2.7 (consulte a fonte mais recente do bower ), bower helpproduz:

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 além disso, bower help installrendimentos (consulte a fonte mais recente ):

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.

existe uma maneira de obter o bower para remover automaticamente deps desnecessários quando você os remove do bower.json?
FutuToad

1
@FutuToad, eu não tentei, mas um bower update(para obter a versão mais recente com os deps antigos removidos) seguido por um bower prune(exclui pacotes locais estranhos) pode fazer o truque.
Zamnuts

1
@MichaelTrouw isso não é possível, pois a estrutura de diretórios é fundamental. Sugiro que você execute uma instalação de produção em outro diretório da sua máquina de desenvolvimento (ou outro ambiente de temporariedade) carregando uma captura instantânea disso via FTP no destino.
Zamnuts


1
@ Edgar, seu código de produção NÃO deve depender do seu devDependenciese, portanto, não faz parte do seu código de inicialização, lógica ou qualquer outro aspecto do seu aplicativo durante a execução normal. Somente se você tentar executar tarefas relacionadas ao desenvolvedor (scripts de construção, suítes de testes etc.), o módulo não será encontrado. Se você precisar de mais informações, faça uma nova pergunta no SO. Por fim, considere migrar do pavilhão, uma vez que é praticamente obsoleto: github.com/bower/bower/issues/2298
zamnuts
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.