Я новичок в использовании npm и bower, создаю свое первое приложение в emberjs :).
У меня есть небольшой опыт работы с rails, поэтому я знаком с идеей файлов для перечисления зависимостей (таких как Bundler Gemfile)
Вопрос: когда я хочу добавить пакет (и проверить зависимость в git), где он принадлежит - в package.json
или в bower.json
?
Исходя из того, что я собираю,
запуск bower install
извлечет пакет и поместит его в /vendor
каталог, при
запуске npm install
он извлечет его и поместит в /node_modules
каталог.
Этот SO-ответ говорит, что bower предназначен для внешнего интерфейса, а npm - для внутреннего.
Ember-app-kit, похоже, придерживается этого различия с первого взгляда ... Но инструкции в gruntfile по включению некоторых функций дают две явные команды, поэтому я совершенно запутался здесь.
Интуитивно я бы догадался, что
npm install --save-dev имя-пакета будет эквивалентно добавлению имени-пакета в мой package.json
bower install --save package-name может совпадать с добавлением пакета в мой bower.json и запуском bower install ?
Если это так, то когда я должен когда-либо устанавливать такие пакеты явно, не добавляя их в файл, который управляет зависимостями (кроме установки инструментов командной строки глобально)?
источник
Ответы:
Обновление на середину 2016 года :
Все меняется так быстро, что, если будет конец 2017 года, этот ответ может быть уже не актуален!
Начинающие могут быстро заблудиться в выборе инструментов для сборки и рабочих процессов, но самое актуальное в 2016 году - это вообще не использовать Bower, Grunt или Gulp! С помощью Webpack вы можете делать все прямо в NPM!
Результат Google "npm как инструмент сборки": https://medium.com/@dabit3/introduction-to-using-npm-as-a-build-tool-b41076f488b0#.c33e74tsa
Webpack: https://webpack.github.io/docs/installation.html
Не поймите меня неправильно, люди используют другие рабочие процессы, и я все еще использую GULP в своем унаследованном проекте (но постепенно покидаю его), но именно так это делается в лучших компаниях, и разработчики, работающие в этом рабочем процессе, зарабатывают МНОГО денег!
Посмотрите на этот шаблон, это очень современная установка, состоящая из смеси лучших и новейших технологий: https://github.com/coryhouse/react-slingshot
Ваши вопросы:
Теперь все принадлежит package.json
Зависимости, необходимые для сборки, находятся в «devDependencies», т.
npm install require-dir --save-dev
Е. (--Save-dev обновляет ваш package.json, добавляя запись в devDependencies)npm install lodash --save
Е. (--Save обновляет ваш package.json, добавляя запись в зависимости)Всегда . Просто из-за комфорта. Когда вы добавляете флаг (
--save-dev
или--save
), файл, который управляет deps (package.json), обновляется автоматически. Не тратьте время, редактируя в нем зависимости вручную. Ярлык дляnpm install --save-dev package-name
этоnpm i -D package-name
и ярлык дляnpm install --save package-name
этоnpm i -S package-name
источник
With help of Webpack you can do everything directly in NPM!
Это неправда, в рабочем процессе даже не нужен веб-пакетNpm и Bower являются инструментами управления зависимостями. Но основное различие между ними заключается в том, что npm используется для установки модулей Node js, а bower js используется для управления внешними компонентами, такими как html, css, js и т . Д.
Факт, который делает это более запутанным, состоит в том, что npm предоставляет некоторые пакеты, которые также могут быть использованы в разработке переднего плана, например,
grunt
иjshint
.Эти строки добавляют больше значения
Редактировать : Grunt довольно сильно отличается от Npm и Bower. Grunt - это инструмент для запуска задач на JavaScript. Вы можете сделать много вещей, используя ворчание, которое вы должны были сделать вручную в противном случае. Выделение некоторых из применений Grunt:
Существуют плагины grunt для компиляции sass, расширения вашего javascript, копирования файлов / папок, минимизации javascript и т. Д.
Обратите внимание, что плагин grunt также является пакетом npm.
Вопрос 1
Это действительно зависит от того, где этот пакет принадлежит. Если это модуль узла (например, grunt, request), то он перейдет в package.json, иначе в bower json.
Вопрос 2
Не имеет значения, устанавливаете ли вы пакеты явно или упоминаете зависимость в файле .json. Предположим, вы работаете над проектом узла и вам нужен другой проект, скажем
request
, тогда у вас есть два варианта:ИЛИ
npm install --save request
--save
options также добавляет зависимость в файл package.json. Если вы не укажете--save
опцию, она только загрузит пакет, но файл json не изменится.Вы можете сделать это в любом случае, не будет существенной разницы.
источник
npm
только в отличие от учебника v1, в котором использовались npm и bower. Я действительно, очень люблю факты, которые (а)package.json
- это единственное, что нужно поддерживать, (б) то, что он рекурсивно вычисляет зависимости в одну строкуnpm install
, и (в) когда есть проблема, вам просто нужно удалитьnode_modules
папку и запустить npm install снова.