Бауэр и devDependencies против зависимостей

159

Я запустил 'yo angular' и потом понял, что он устанавливает 1.0.8, я удалил угловые компоненты, однако в исходном файле bower.json были angular-mocks и angular-сценарий в разделе 'devDependencies', когда я снова добавил все 1.2. Компоненты 0-rc.2 angular-mocks и angular-script под зависимостями вместо devDependencies.

Мне любопытно, как используется devDependencies и нужно ли мне вручную исправлять его или оставить как есть. Есть ли способ указать в bower CLI, как пометить что-то как зависимость dev?

После редактирования файла:

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

До редактирования:

{
    "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
источник

Ответы:

284

devDependencies предназначены для сценариев, связанных с разработкой, например модульного тестирования, сценариев упаковки, генерации документации и т. д.

dependencies необходимы для производственного использования, и предполагается, что требуется также для dev.

В том числе devDependenciesвнутри dependencies, как у вас есть, не будет вредным; модуль просто объединит больше файлов (байтов) во время установки - потребляя больше (ненужных) ресурсов. С точки зрения POV, эти дополнительные байты могут быть вредными, зависит только от вашей точки зрения.

Чтобы пролить свет на то bower help install, что перечисленные ниже модули devDependenciesмогут быть опущены при установке модуля через -pили --production, например:

bower install angular-latest --production

Это рекомендуемый способ выполнить установку для чего-либо кроме платформы разработки.

Напротив, нет способа опустить модули, перечисленные ниже dependencies.


Начиная с bower@1.2.7 (см. Последний источник bower ), bower helpполучаем:

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.

и далее, bower help installурожайность (см. последний источник ):

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
источник
Есть ли способ получить Bower для автоматического удаления ненужных deps, когда вы удалите их из bower.json?
FutuToad
1
@FutuToad, я не пробовал, но bower update(чтобы получить последнюю версию с удаленными старыми deps), за которым следует bower prune(удаляет посторонние локальные пакеты), можно добиться цели.
Замнюц
1
@MichaelTrouw это невозможно, так как структура каталогов является фундаментальной. Я бы посоветовал выполнить производственную установку в другом каталоге на компьютере разработчика (или в другой промежуточной среде), загрузив его снимок через FTP на целевой сервер.
Замнюц
1
@Genu, да, вы можете: github.com/blittle/bower-installer#ignore-files см. SO Фильтр
zamnuts
1
@ Edgar ваш производственный код НЕ должен зависеть от вашего devDependencies, и, следовательно, не является частью вашего загрузочного кода, логики или каких-либо других аспектов вашего приложения при нормальной работе. Только если вы попытаетесь запустить задачи, связанные с dev (сценарии сборки, тестовые наборы и т. Д.), Вы получите модуль, который не найден. Если вам требуется дополнительная информация, пожалуйста, задайте новый вопрос о SO. Наконец, рассмотрите возможность перехода от беседки, поскольку она в значительной степени устарела: github.com/bower/bower/issues/2298
zamnuts