Comments 17
Вот эта вот команда с npm выполняется 17.5 сек, с redrun 16.5 сек. Т.е. в моей ситуации прирост есть, но незначительный.
Дело, в том, что redrun
разворачивает лишь те скрипты, которые расписаны в package.json
.
Для того, что бы ощутить результат в полной мере, необходимы небольшие изменения:
{
"test:full:speed": "redrun test:compile test:full:test test:full:cover test:removeTmpDir",
"test:full:test": "node test-tmp/test/dev/test.js",
"test:full:cover": "$(npm bin)/istanbul cover $(npm bin)/_mocha -- test-tmp/test/index.spec.js",
"test:removeTmpDir": "scripts/test-remove-tmp-dir"
}
В моем случае результаты получились немного другие:
coderaiser@cloudcmd:~/javascript-obfuscator$ time npm run test:full
real 3m46.539s
user 0m45.062s
sys 0m50.060s
coderaiser@cloudcmd:~/javascript-obfuscator$ time redrun test:full:speed
> scripts/test-compile && node test-tmp/test/dev/test.js && $(npm bin)/istanbul cover $(npm bin)/_mocha -- test-tmp/test/index.spec.js && scripts/test-remove-tmp-dir
real 3m8.401s
user 0m39.272s
sys 0m44.236s
А с такими скриптами, будет еще быстрее.
{
"test:full:speed:max": "redrun test:compile test:full:test test:full:cover:speed test:removeTmpDir",
"test:full:test": "node test-tmp/test/dev/test.js",
"test:full:cover:speed": "istanbul cover $(npm bin)/_mocha -- test-tmp/test/index.spec.js",
"test:removeTmpDir": "scripts/test-remove-tmp-dir"
}
coderaiser@cloudcmd:~/javascript-obfuscator$ time redrun test:full:speed:max
real 2m58.866s
user 0m37.000s
sys 0m42.692s
Чем больше npm-скриптов — тем выше скорость.
Действительно, этого не хватает. Нужно будет подумать об этом.
"docker": "docker push registry.docker.com/myapp:v$npm_package_version"
выполняется, но вместо переменной пустота.
Спасибо, поддержка $npm_package_version
добавлена в v5.4.0.
В redrun v5.5.0 добавлена поддержка автодополнения названий скриптов по табу аналогичную той, что используется в npm. Для установки достаточно выполнить:
redrun-completion >> ~/.bashrc
redrun-completion >> ~/.zshrc
Просто конфиги свои берёт не из специального файла, а из package.json, который по идее должен быть в node-проектах. Да, умно брать конфиги от туда, эта идея хороша, но не нова.
Я хочу попросить сравнить скорость redrun и make, если не затруднит, сделайте пожалуйста.
Мне даже кажется, что в данном случае make будет лучше, чем redurn, потому что самому make на линуксах ничего устанавливать не надо, он там и так стоит, а рэдран надо.
Make есть на линуксах, но не на Windows.
Просто конфиги свои берёт не из специального файла, а из package.json, который по идее должен быть в node-проектах. Да, умно брать конфиги от туда, эта идея хороша, но не нова.
Не свои конфиги, а конфиги npm. Redrun в этом плане совместим с npm, и ничего нового не привносит.
Я хочу попросить сравнить скорость redrun и make, если не затруднит, сделайте пожалуйста.
У redrun
и make
разные цели. Redrun
разворачивает npm-скрипты, и запускает получившуюся команду. Make автоматизирует процесс преобразования файлов из одной формы в другую, у него свой формат, и возможности гораздо шире, чем у redrun, но в его штатную поставку не входит чтение и исполнение npm-скриптов, скорее он предлагает писать скрипты в Makefile
. Этот подход не хуже, он может быть быстрее, но он кардинально отличается от используемого в redrun
а именно: использование существующих скриптов, а не написание новых.
Я не владею make
и мне не близка его философия, поэтому я не смогу сделать такое сравнение.
./node_modules/.bin/istanbul cover -x tests.js --dir=./build/coverage --report=lcov --hook-run-in-context ./node_modules/mocha/bin/_mocha -- --reporter spec tests.js
Согласитесь, длинно… В Makefile хотя бы на новые строки можно перенести.
Я лично использую NPM скрипты только если команды очень простые и короткие или если достоверно известно, что будут юзеры на винде.
Действительно очень длинно, такую команду в любом случае стоит упростить. Сделать это можно добавив пару секций в package.json
:
{
"config": {
"mocha": "--reporter spec test",
"istanbul": "-x test --dir=./build/coverage --report=lcov --hook-in-context",
},
"scripts": {
"coverage" : "istanbul cover $npm_config_istanbul _mocha -- $npm_config_mocha"
}
}
После чего скрипт можно запускать с помощью:
redrun coverage
либо
npm run coverage
./node_modules/.bin/istanbul \
cover \
-x tests.js \
--dir=./build/coverage \
--report=lcov \
--hook-run-in-context \
./node_modules/mocha/bin/_mocha \
-- \
--reporter spec \
tests.js
и запись у вас не полная — пути до istanbul и mocha потерялись
В этих путях нет смысла, они добавляются в переменную окружения PATH во-время запуска npm-скриптов.
Я бы сильно поспорил про порог вхождения для gulp. Проблема в том, что устаревают не только плагины для gulp, но и все остальное без исключения, поэтому хотелось бы, чтобы авторы думали об обратной совместимости почаще. Redrun решает только частный случай быстрого запуска, который не всех беспокоит.
Ускоряем npm-скрипты