<div dir="ltr">У меня есть приложение которое использует некоторое количество модулей соответственно с подмодулями.<div>К примеру(Показаны только 2 уровня зависимостей!!!)</div><div><br></div><div><div>forever@0.10.8 node_modules/forever</div>
<div>├── colors@0.6.0-1</div><div>├── watch@0.7.0</div><div>├── timespan@2.0.1</div><div>├── pkginfo@0.3.0</div><div>├── optimist@0.4.0 (wordwrap@0.0.2)</div><div>├── nssocket@0.5.1 (lazy@1.0.11, eventemitter2@0.4.12)</div>
<div>├── utile@0.1.7 (deep-equal@0.0.0, rimraf@1.0.9, ncp@0.2.7, async@0.1.22, mkdirp@0.3.5, i@0.3.1)</div><div>├── nconf@0.6.7 (ini@1.1.0, pkginfo@0.2.3, async@0.1.22, optimist@0.3.7)</div><div>├── cliff@0.1.8 (eyes@0.1.8, winston@0.6.2)</div>
<div>├── flatiron@0.3.5 (optimist@0.3.5, director@1.1.10, prompt@0.2.9, broadway@0.2.7)</div><div>├── forever-monitor@1.2.2 (watch@0.5.1, minimatch@0.0.5, broadway@0.2.7, ps-tree@0.0.3)</div><div>└── winston@0.7.1 (cycle@1.0.2, eyes@0.1.8, stack-trace@0.0.6, async@0.2.9, request@2.16.6)</div>
</div><div><br></div><div style>Смотрим</div><div style>watch@0.7.0        watch@0.5.1<br></div><div style>pkginfo@0.3.0      pkginfo@0.2.3 <br></div><div style>optimist@0.4.0     optimist@0.3.7     optimist@0.3.5<br></div>
<div style>async@0.1.22      async@0.1.22      async@0.2.9</div><div style>winston@0.6.2      winston@0.7.1</div><div style>.....</div><div style><br></div><div style>Предположим роботом мы запаковали все версии пакетов, и даже зависимости проставили, и все у нас хорошо.</div>
<div style><br></div><div style>Пишем какой-то сервис на express который будет запускаться с помощью forever</div><div style><div>express@3.2.6 node_modules/express</div><div>├── methods@0.0.1</div><div>├── fresh@0.1.0</div>
<div>├── range-parser@0.0.4</div><div>├── cookie-signature@1.0.1</div><div>├── buffer-crc32@0.2.1</div><div>├── cookie@0.1.0</div><div>├── debug@0.7.2</div><div>├── commander@0.6.1</div><div>├── mkdirp@0.3.4</div><div>├── send@0.1.0 (mime@1.2.6)</div>
<div>└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)</div><div><br></div><div>cookie@0.1.0     cookie@0.0.5<br></div><div>send@0.1.0        send@0.1.1<br></div><div>.....</div>
<div><br></div><div style>А если нам еще версии проверить между этими двумя модулями???</div><div style><br></div><div style><br></div><div style>Тоесть чтоб запустить мое приложение - мне надо собрать &quot;много&quot; пакетов в разных версиях и вариациях. При этом пиная Игоря, чтоб он написал адекватный findreq для поиска правильной версии для зависимостей. А еще надо чтоб ко мне весь этот хлам слинковался в нужное место.</div>
<div style><br></div><div style>У меня не один проект на ноде. при этом паковать в рпм я их не собираюсь. Мне проще сделать npm install</div><div style><br></div><div style>Главное прописать зависимости в package.json</div>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/6/26 Viacheslav Dubrovskyi <span dir="ltr">&lt;<a href="mailto:dubrsl@gmail.com" target="_blank">dubrsl@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div class="im">
    <div>26.06.2013 00:53, Дмитрий Кулик wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">2013/6/26 Igor Zubkov <span dir="ltr">&lt;<a href="mailto:igor.zubkov@gmail.com" target="_blank">igor.zubkov@gmail.com</a>&gt;</span><br>
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
              <br>
              nodejs + npm должен использовать такой же подход.<br>
              <br>
              Вот интересно, эти все nodejs-* пакеты хоть совместимы
              друг с другом?</blockquote>
            <div><br>
            </div>
            <div>
              <div>Локально пакеты лежат рядом с приложением и набор
                пакетов при этом от приложения к приложению может
                отличаться. Не требует root.</div>
              <div>Из минусов - для биндингов требуется компилятор +
                *-devel пакет библиотек. </div>
            </div>
            <div><br>
            </div>
            <div>Проблемы с пакетами:</div>
            <div>Приложение</div>
            <div>+ A ver 2</div>
            <div>+ B ver 1</div>
            <div>__+ A ver 1</div>
            <div><br>
            </div>
            <div>Все. наша система сломалась. И это скорее
              правило чем исключение.</div>
          </div>
        </div>
      </div>
    </blockquote></div>
    В Федоре немного не так делают. <br>
    Я предлагаю такой подход:<br>
    <br>
    1. Все модули должны располагаться в
    /usr/share/node_modules/cron@1.0.1 , например в таком формате.<br>
    2. На последнюю версию должна идти ссылка
    /usr/share/node_modules/cron -&gt; <a href="mailto:cron@1.0.1" target="_blank">cron@1.0.1</a><br>
    3. Если модуль, требует другой модуль, то в папке этого модуля
    должна создаваться ссылка на соответствующий модуль.<br>
    <br>
    В вашей схеме это выглядит так:<br>
    <br>
    <div>
      <div>+ A ver 1</div>
      + A ver 2</div>
    <div>+ B ver 1</div>
    <div>__+ link to A ver 1</div><span class="HOEnZb"><font color="#888888">
    <div><br>
    </div>
    <br>
    <br>
    <pre cols="72">-- 
WBR,
Viacheslav Dubrovskyi</pre>
  </font></span></div>

<br>_______________________________________________<br>
Devel mailing list<br>
<a href="mailto:Devel@lists.altlinux.org">Devel@lists.altlinux.org</a><br>
<a href="https://lists.altlinux.org/mailman/listinfo/devel" target="_blank">https://lists.altlinux.org/mailman/listinfo/devel</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Dmitry Kulik<br>ALTLinux Team<br>
e-mail: lnkvisitor.ts[at]<a href="http://gmail.com" target="_blank">gmail.com</a><br>jabber: lnkvisitor.ts[at]<a href="http://gmail.com" target="_blank">gmail.com</a>
</div>