<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>Тоесть чтоб запустить мое приложение - мне надо собрать "много" пакетов в разных версиях и вариациях. При этом пиная Игоря, чтоб он написал адекватный 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"><<a href="mailto:dubrsl@gmail.com" target="_blank">dubrsl@gmail.com</a>></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"><<a href="mailto:igor.zubkov@gmail.com" target="_blank">igor.zubkov@gmail.com</a>></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 -> <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>