Bower i devDependencies a zależności


159

Uruchomiłem `` yo angular '' i zdałem sobie sprawę, że instaluje 1.0.8, odinstalowałem komponenty kątowe, jednak oryginalny plik bower.json zawierał angular-mocks i angular-scenario w `` devDependencies '', kiedy ponownie dodam wszystkie 1.2. 0-rc.2 komponenty angular-mocks i angular-scenario w zależnościach zamiast devDependencies.

Jestem ciekawy, w jaki sposób używa się devDependencies i czy powinienem zawracać sobie głowę ręcznym naprawieniem go lub pozostawieniem tak, jak jest. Czy istnieje sposób, aby określić w interfejsie wiersza polecenia, jak oznaczyć coś jako zależność dewelopera?

Po edycji pliku:

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

Przed edycjami:

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

Odpowiedzi:


284

devDependencies są przeznaczone dla skryptów związanych z programowaniem, np. testowanie jednostkowe, skrypty pakowania, generowanie dokumentacji itp.

dependencies są wymagane do użytku produkcyjnego i zakłada się, że są również wymagane dla programistów.

Włączanie się do devDependencieswnętrza dependencies, jak to macie, nie będzie szkodliwe; moduł po prostu połączy więcej plików (bajtów) podczas instalacji - zużywa więcej (niepotrzebnych) zasobów. Z purystycznego punktu widzenia te dodatkowe bajty mogą być szkodliwe, zależy tylko od twojej perspektywy.

Aby rzucić nieco światła na to bower help install, moduły wymienione poniżej devDependenciesmożna pominąć podczas instalacji modułu za pomocą -plub --productionnp .:

bower install angular-latest --production

Jest to zalecany sposób wykonywania instalacji dla czegokolwiek innego niż platforma programistyczna.

Wręcz przeciwnie, nie ma możliwości pominięcia modułów wymienionych w dependencies.


Od bower@1.2.7 (patrz najnowsze źródło Bower ), bower helpdaje:

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.

i dalej, bower help installplony (patrz najnowsze źródło ):

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.

czy istnieje sposób, aby bower automatycznie usuwał niepotrzebne pliki po usunięciu ich z bower.json?
FutuToad,

1
@FutuToad, nie próbowałem tego, ale bower update(aby uzyskać najnowszą wersję z usuniętymi starymi deps), a następnie bower prune(usuwa obce pakiety lokalne) może załatwić sprawę .
zamnuts

1
@MichaelTrouw nie jest to możliwe, ponieważ struktura katalogów jest fundamentalna. Sugerowałbym wykonanie instalacji produkcyjnej w innym katalogu na komputerze deweloperskim (lub w innym środowisku pomostowym), przesyłając migawkę tego przez FTP do miejsca docelowego.
zamnuts


1
@Edgar, twój kod produkcyjny NIE powinien zależeć od twojego devDependenciesi dlatego nie jest częścią twojego kodu bootstrap, logiki ani żadnego innego aspektu twojej aplikacji podczas normalnego działania. Tylko jeśli spróbujesz uruchomić zadania związane z programistami (skrypty budowania, zestawy testów itp.), Otrzymasz nie znaleziony moduł. Jeśli potrzebujesz dodatkowych informacji, zadaj nowe pytanie na SO. Na koniec rozważ migrację z bower, ponieważ jest prawie przestarzała: github.com/bower/bower/issues/2298
zamnuts
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.