Как я могу обработать зависимости Node.js в проекте на git с NPM? - PullRequest
9 голосов
/ 29 сентября 2011

Я сталкивался с этим сценарием довольно много раз и до сих пор не нашел ответа. Я начинаю новый проект Node.js, и этот проект будет зависеть от некоторых других библиотек. В качестве аргумента предположим, что некоторые из них являются чисто JS-библиотеками, которые могут быть добавлены в качестве подмодулей git в новом проекте, но у некоторых есть фрагменты, которые требуют дополнительных усилий (например, системные зависимости, которые устанавливает npm, или библиотеки C, которые должны быть скомпилированы ).

Как лучше всего запустить этот проект и добавить его в git со следующими двумя требованиями:

  • Библиотеки других людей не привязаны к нашему репо, вместо этого они являются субмодулями или загружаются динамически и устанавливаются с помощью npm.
  • Не нужно иметь большой список инструкций, которым нужно следовать, просто чтобы клонировать репо и создать рабочую среду. Запуск git submodules update --init --recursive - это нормально, запуск команды npm для чтения package.json и установки зависимостей - это нормально (такая команда существует?), Но вынуждает всех проходить через «npm install _ _ "каждой зависимости не в порядке, и я бы предпочел не использовать 'make' или 'ant', чтобы сделать это, если мне не нужно.

Есть мысли о том, как лучше всего это сделать? Это кажется такой простой, простой вещью, но я не смог найти ни одного примера того, что я пытаюсь сделать.

Редактировать: Грамматика

1 Ответ

10 голосов
/ 29 сентября 2011

edit Игнорировать ниже, но оставить для справки. Иногда я не думаю, что ясно утром:)

создайте package.json файл, добавьте свои зависимости, и ваша установка просто станет:

npm install

из каталога вашего проекта. git ignore все добавленные проекты.


npm submodule foo

Он устанавливает пакеты в node_modules через git submodule, поэтому github и т. Д. Распознают, что они являются ссылками. Это работает всякий раз, когда в пакет npm включен git URI. К сожалению, хорошего числа нет, поэтому вам не повезло.

Также обратите внимание, что когда вы это сделаете, npm больше не будет работать с модулем, например вы не можете обновить через npm, вы должны сделать это через git


Или вы можете просто сделать что-то вроде:

. / Modules.js

modules.exports = [ 'express@1.0', 'jade@2.0', 'stylus@3.0' ];

. / Сделать

#!/usr/bin/env node
var modules = require( './modules' )
  ,   spawn = require('child_process').spawn;

for( var i=0, l=modules.length; i<l; i++ ){
    spawn( 'npm', [ 'install', modules[i] ] );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...