Залежність від бауера і dev залежностей від залежностей


159

Я запустив 'yo angular' і згодом зрозумів, що він встановлює 1.0.8, я видалив кутові компоненти, однак оригінальний файл bower.json мав кутові макети та кутовий сценарій під 'devDependpendi', коли я знову додаю всі 1.2. 0-rc.2 компоненти angular-mocks та angular-scenario під залежність замість devDependpend.

Мені цікаво, як використовується devDependitions, і якщо мені слід зайнятися її ручним виправленням або залишити як є. Чи є спосіб вказати на CLI-bower як позначати щось як залежність від розробника?

Після редагування файлу:

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

Відповіді:


284

devDependencies призначені для сценаріїв, пов'язаних з розробкою, наприклад, тестування одиниць, сценарії упаковки, створення документації тощо.

dependencies необхідні для використання у виробництві, і передбачається, що потрібні і для розробників.

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

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

bower install angular-latest --production

Це рекомендований спосіб виконати інсталяцію для будь-якого іншого, крім платформи розробки.

Навпаки, немає можливості опустити модулі, перелічені в розділі dependencies.


Станом на bower@1.2.7 (див. Останнє джерело бауера ), 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.

чи є спосіб отримати прихильник автоматично вилучати непотрібні депи, коли ви видаляєте їх з bower.json?
FutuToad

1
@FutuToad, я не пробував цього, але bower update(щоб отримати останню версію зі старими депами), за якою слідує bower prune(видаляє сторонні локальні пакети), це може зробити трюк.
замнуть

1
@MichaelTrouw це неможливо, оскільки структура каталогів є фундаментальною. Я б запропонував виконати інсталяцію виробництва в іншому каталозі на вашій розроблювальній машині (або в іншому інсценізаційному середовищі), завантаживши її знімок через FTP до цілі.
замнуть


1
@Edgar, ваш виробничий код НЕ повинен залежати від вашого devDependencies, і тому не є частиною вашого коду завантаження, логіки та будь-якого іншого аспекту вашої програми при нормальному виконанні. Тільки якщо ви спробуєте запустити завдання, пов'язані з розробниками (побудувати сценарії, тестові набори тощо), ви отримаєте модуль не знайдений. Якщо вам потрібна додаткова інформація, будь ласка, задайте нове запитання щодо SO. Нарешті, подумайте про міграцію подалі від цибулі, оскільки вона майже застаріла: github.com/bower/bower/isissue/2298
zamnuts
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.