Bower dan devDependencies vs dependensi


159

Saya menjalankan 'yo angular' dan menyadari setelah itu bahwa ia menginstal 1.0.8, saya mencopot komponen angular, namun file bower.json yang asli memiliki angular-mock dan angular-scenario di bawah 'devDependencies' ketika saya menambahkan kembali semua 1.2. 0-rc.2 komponen-sudut mengolok-olok dan skenario-sudut di bawah dependensi bukan dependensi dev.

Saya ingin tahu bagaimana devDependencies digunakan dan apakah saya harus repot-repot memperbaikinya secara manual atau biarkan apa adanya. Apakah ada cara untuk menentukan pada CLI bower bagaimana menandai sesuatu sebagai ketergantungan dev?

Setelah mengedit file:

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

Sebelum Diedit:

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

Jawaban:


284

devDependencies ditujukan untuk skrip terkait pengembangan, misalnya pengujian unit, skrip pengemasan, pembuatan dokumentasi, dll.

dependencies diperlukan untuk penggunaan produksi, dan diasumsikan diperlukan untuk dev juga.

Termasuk di devDependenciesdalam dependencies, seperti yang Anda miliki, tidak akan berbahaya; modul hanya akan membundel lebih banyak file (byte) selama instalasi - memakan lebih banyak sumber daya (tidak perlu). Dari POV murni, byte tambahan ini bisa merugikan, hanya tergantung pada perspektif Anda.

Untuk menjelaskan, melihat bower help install, modul yang tercantum di bawah devDependenciesdapat dihilangkan selama instalasi modul melalui -patau --production, misalnya:

bower install angular-latest --production

Ini adalah cara yang disarankan untuk melakukan instalasi untuk apa pun selain platform pengembangan.

Sebaliknya, tidak ada cara untuk menghilangkan modul yang terdaftar di bawah dependencies.


Pada bower@1.2.7 (lihat sumber terbaru bower ), bower helphasil:

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.

dan selanjutnya, bower help installhasil (lihat sumber terbaru ):

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.

apakah ada cara untuk membuat bower dihapus secara otomatis, deps yang tidak diperlukan saat Anda menghapusnya dari bower.json?
FutuToad

1
@ FutuToad, saya belum mencobanya tetapi bower update((untuk mendapatkan versi terbaru dengan deps lama dihapus) diikuti oleh bower prune(menghapus paket lokal yang asing) mungkin melakukan trik.
zamnuts

1
@MichaelTrouw ini tidak mungkin karena struktur direktori sangat mendasar. Saya sarankan melakukan instalasi produksi di direktori lain di mesin pengembangan Anda (atau lingkungan pementasan lainnya) mengunggah foto itu melalui FTP ke target.
zamnuts


1
@Edgar kode produksi Anda TIDAK harus bergantung pada Anda devDependencies, dan karenanya bukan bagian dari kode bootstrap Anda, logika, atau aspek lain dari aplikasi Anda saat berjalan normal. Hanya jika Anda mencoba menjalankan tugas terkait dev (membuat skrip, test suites, dll.), Anda tidak akan menemukan modul. Jika Anda memerlukan informasi lebih lanjut, silakan ajukan pertanyaan baru pada SO. Terakhir, pertimbangkan migrasi jauh dari bower karena sudah cukup usang: github.com/bower/bower/issues/2298
zamnuts
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.