Привет. После перерыва решил возобновить изучение bem-tools...
Установил nodejs x64 v0.10.13
Скачал и закинул npm v1.3.2
Организовал папочку, клонировал туда репо как сказано в инструкциях
git clone https://github.com/bem/project-stub ./
здесь же запустил
npm install
скачка пакетов идет вроде нормально, но под конец начинаются пляски с варнингами зависимостями типа:
- npm http 200 https://registry.npmjs.or
g/uglify-js/-/uglify-js-1 .3.4.tgz
npm http GET https://registry.npmjs.org/q
npm http 304 https://registry.npmjs.org/q
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\q-fs requires q@'0.8.x' but will load
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\q-http requires q@'0.8.x' but will load
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\borschik requires q@'~0.8.10' but will load
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\apw requires q@'~0.8.10' but will load
npm WARN unmet dependency D:\vrs\test\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
и не пойму вот что не так... я уже и ручками правил зависимости, и отдельно пытался установить нужные версии... не помогает
может кто-то сталкивался с подобной проблемой?
Разобрался!
здесь http://bem.info/tools/bem/installation/ указано что надо после клонирования болванки изменить зависимости, а в русской версии http://ru.bem.info/tools/bem/installation/ таких заметок нет!
Исправил завимисости и ... варнингов стало меньше, но проблема не исчезла
>bem server em\node_modules\q\q.js:38 8:35 (D:\asd\vrs\node_modules\bem\bin\bem:6:23)
10:58:04.715 - info: bem 0.5.33
10:58:04.724 - info: Project root is 'D:\asd\vrs'
Error: Cannot find module 'bem-environ/lib/nodes'
at D:\asd\vrs\node_modules\bem\lib\make.js:107:16
at D:\asd\vrs\.bem\make.js:4:1
at evalConfig (D:\asd\vrs\node_modules\bem\lib\make.js:134:8)
at include (D:\asd\vrs\node_modules\bem\lib\make.js:121:12)
at D:\asd\vrs\node_modules\bem\lib\make.js:87:32
at D:\asd\vrs\node_modules\b
From previous event:
at Cmd.exports.Cmd.Cmd._do (D:\asd\vrs\node_modules\bem\node_modules\coa\lib\cmd.js:424:14)
at Cmd.exports.Cmd.Cmd.do (D:\asd\vrs\node_modules\bem\node_modules\coa\lib\cmd.js:471:17)
at Cmd.exports.Cmd.Cmd.run (D:\asd\vrs\node_module\bem\node_modules\coa\lib\cmd.js:459:22)
at Object.
at node.js:901:3
что то я вообще запутался с этими инструментами
На ворнинги не обращайте внимания. Многие из них пропадут в версии bem-tools@1.0.0.
Никакие зависимости не нужно править руками, достаточно на проекте прописать зависимость от bem.
Судя по тексту ошибки, вы используете модуль bem-environ, но он не установлен.
Напишите последовательность команд (начиная с клонирования проекта), которая к ошибке привела.
Похоже, это влияет на сборку JS. Вот таск https://github.com/bem/bem-core/issues/155
> git clone https://github.com/bem/project-stub 01
> cd 01
> ls -1
GNUmakefile
README.md
desktop.blocks
desktop.bundles
package.json
> npm install
...
npm http 200 https://registry.npmjs.or g/uglify-js/-/uglify-js-1 .3.4.tgz
npm http GET https://registry.npmjs.org/q
npm http 304 https://registry.npmjs.org/q
npm WARN unmet dependency D:\asd\vrs\01\node_modules\bem\node_modules\q-fs req
uires q@'0.8.x' but will load
npm WARN unmet dependency D:\asd\vrs\01\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
npm WARN unmet dependency D:\asd\vrs\01\node_module s\bem\node_modules\q-http requires q@'0.8.x' but will load
npm WARN unmet dependency D:\asd\vrs\01\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
npm WARN unmet dependency D:\asd\vrs\01\node_module s\bem\node_modules\borsch ik requires q@'~0.8.10' but will load
npm WARN unmet dependency D:\asd\vrs\01\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
npm WARN unmet dependency D:\asd\vrs\01\node_modules\bem\node_modules\apw requires q@'~0.8.10' but will load
npm WARN unmet dependency D:\asd\vrs\01\node_modules\bem\node_modules\q,
npm WARN unmet dependency which is version 0.9.5
bem-environ@1.0.1 node_modules\bem-environ
bem@0.6.10 node_modules\bem
├── node.extend@1.0.0
├── inherit@1.0.4
├── colors@0.6.0-1
...
> bem make
14:42:02.905 - info: bem 0.6.10
14:42:02.999 - info: Graph:
== root
all
build
libs
libs\bem-bl
libs\bem-controls
desktop.blocks*
libs
libs\bem-bl
libs\bem-controls
desktop.bundles*
libs
libs\bem-bl
libs\bem-controls
desktop.blocks*
libs
libs\bem-bl
libs\bem-controls
14:42:03.009 - info: [i] Going to build 'all' [1]
14:42:03.013 - info: [t] isValid() time for "libs\bem-bl" [1]: 1ms
14:42:03.014 - info: [*] make 'libs\bem-bl' [1]
14:42:03.015 - info: [t] isValid() time for "libs\bem-controls" [1]: 3ms
14:42:03.016 - info: [*] make 'libs\bem-controls' [1]
14:42:03.063 - info: [t] Build time for "libs\bem-bl" [1]: 51ms
14:42:03.064 - info: [t] Build total: 156ms
14:42:03.077 - info: [t] Build time for "libs\bem-controls" [1]: 65ms
Error: Command failed: fatal: could not create work tree dir 'D:\asd\vrs\01\li
bs\bem-bl'.: No such file or directory
at ChildProcess.exithandler (child_process.js:637:15)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:735:16)
at Socket. (child_process.js:948:11)
at Socket.EventEmitter.emit (events.js:95:17)
at Pipe.close (net.js:466:12)
From previous event:
at Cmd.exports.Cmd.Cmd._do (D:\asd\vrs\01\node_modules\bem\node_modules\coa\lib\cmd.js:424:14)
at Cmd.exports.Cmd.Cmd.do (D:\asd\vrs\01\node_modules\bem\node_modules\coa\lib\cmd.js:471:17)
at Cmd.exports.Cmd.Cmd.run (D:\asd\vrs\01\node_modules\bem\node_modules\coa\lib\cmd.js:459:22)
at Object. (D:\asd\vrs\01\node_modules\bem\bin\bem:6:23)
at node.js:901:3
> bem server
14:53:07.677 - info: bem 0.6.10
14:53:07.683 - info: Project root is 'D:\asd\vrs\01'
14:53:07.768 - info: Graph:
== root
all
build
libs
libs\bem-bl
libs\bem-controls
desktop.blocks*
libs
libs\bem-bl
libs\bem-controls
desktop.bundles*
libs
libs\bem-bl
libs\bem-controls
desktop.blocks*
libs
libs\bem-bl
libs\bem-controls
14:53:07.779 - info: Server is listening on port 8080. Point your browser to http://localhost:8080/
в свою очередь в браузере по адресу
http://localhost:8080/desktop.bundles
если перед npm install поправить package.js и сделать
"dependencies": {
"bem" : "~0.5.33"
},
то подгрузка нормально идет, а вот bem make и bem server вызывают судорожное дергание в конвульсиях с различными ошибками... но сервер запускается...
проблема специфичная для windows и связана с тем, что не удается автоматически создать папку для библиотек. мы это постараемся поправить как можно быстрее, но пока для вас иструкция следующая:
1. клонируем project-stub
2. npm i
3. mkdir libs
4. bem make / bem server
должно работать.
зависимости менять не нужно, обращать внимание на WARN тоже не нужно.
Да, сработало.
npm i вызвал конечно бурю негодования и всяких красных надписей, но сервер заработал
Спасибо
также можно проивоздить сборку на виртуальной машине, напишу подробно как, если заинтересовало.
Весьма обяжете!
Заранее спасибо
в данный момент на подробно нет времени, постараюсь позже. Если в кратце:
1) качаем убунту-сервер
2) устанавливаем его на VirtualBox виртуальную машину
3) устанавливаем дополнения гостевой ОС
4) устанавливаем git, nodejs, nginx(если нужен), proftpd(если нужен, о нем ниже)
5) монтируем общую папку с проектами (у меня это целый ntfs раздел)
6) В настройках сети VirtualBox отключить DHCP
7) В настройках виртуальной машины добавить еще один адаптер - "виртуальный адаптер хоста", он позволит достучатся до бэм-сервера из хост-ОС по статическому ip. Прописать руками настройки для этого адаптера и назначить статический ip(у меня это 192.168.56.101)
Все, на шагах 3, 5, 7 скорее всего будут проблемы, но решение в интернете есть, как будет время напишу подробно.
Производить сборку сразу в примонтированном ntfs разделе у меня получилось только на проекте, где не используется технология интернационализации i18n(проблема с созданием симлинков), поэтому для таких проектов понадобится proftpd на сервере. Т.е. у вас будет две копии проекта: 1-я - на windows, с которой вы работаете, 2-я - на ubuntu, которая собственно и собирается. Настройте деплой/синхронизацию в вашей ide, и перед сборкой обновляйте ubuntu версию проекта.