Pull to refresh
  • by relevance
  • by date
  • by rating

Facebook и Google выпустили Yarn, новый менеджер пакетов для JavaScript

JavaScriptProgramming


Вчера вечером Facebook официально анонсировала новый пакетный менеджер для JavaScript под названием Yarn. На одной из стадии разработки к проекту подключились компании Google, Exponent и Tilde.

«Самый популярный менеджер пакетов JavaScript — это NPM. Он обеспечивает доступ более чем к 300 тысячам пакетов. Используют его более 5 миллионов разработчиков, а ежемесячно к нему обращаются для загрузки более 5 миллиардов раз.

Мы успешно использовали NPM в Facebook в течение многих лет, но так как объем нашего кода и число разработчиков выросло, мы столкнулись с проблемами последовательности, безопасности и производительности. После попытки решить все эти вопросы, мы пришли к намерению создать собственное решение, чтобы обеспечить надежность управления разработкой. Итогом этой работы стал Yarn — быстрая, надежная и безопасная альтернатива клиенту NPM», — говорится в официальном блоге Facebook о новинке.
Читать дальше →
Total votes 50: ↑42 and ↓8+34
Views40K
Comments 113

GitHub купил npm

JUG Ru Group corporate blogJavaScriptGitHub


Пакетный менеджер npm становится частью GitHub. Объявления об этом появились и в блоге GitHub, и в блоге npm.

В блоге npm основатель проекта Айзек Шлютер подчёркивает «npm, который вы знаете, никуда не девается». Он выражает уверенность, что для проекта это перемена к лучшему, и сообщает, что сам продолжит работать над ним.
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Views12K
Comments 25

Ещё один однострочный пакет npm сломал экосистему JavaScript

ITSumma corporate blogOpen sourceJavaScriptProgramming
В субботу обновление маленькой библиотеки is-promise вызвало переполох в значительной части экосистемы JavaScript. Зависимости от сломанной библиотеки встроены в 3,4 миллиона проектов. Это уже второй раз, когда крошечный проект JavaScript вызывает проблемы такого масштаба.

Библиотека is-promise состоит из двух строк кода, а разработчики могут использовать её в своих проектах с помощью однострочного вызова.

declare function isPromise<T, S>(obj: Promise<T> | S): obj is Promise<T>;
export default isPromise;

Предназначение библиотеки состоит в проверке, что JavaScript-объект является типом Promise, то есть представляет собой конечное завершение асинхронной операции и её результирующее значение.
Читать дальше →
Total votes 49: ↑43 and ↓6+37
Views16K
Comments 79

Использование пакетного менеджера Node.js на Windows

Node.JS
Мне долгое время хотелось полноценно поиграться с нодом, но так сложилась жизнь, что я пользуюсь Windows как на работе, так и дома.

Только недавно портировали, собственно, сам нод на Windows (и не без помощи Microsoft, за что им спасибо). Это хорошо, но как же быть с пакетным менеджером npm который используется чуть менее чем во всех туториалах?

Продолжительный поиск привел к нескольким статьям, в которых в общих чертах говорилось об установке чего-то, непонятно чего и непонятно как (cygwin и т. п.)

Долгое время я не мог вменяемо завести npm, но в какой то момент подвернулась замечательная статья некоего Pablo M. Cibraro. В которой простым языком описано что и как делать.

В общем итоге нам предлагают поставить Python, затем скачать утилиту, за авторством Japj. И запуска ее точно так же, как и npm — python ryppi install <имя_модуля>

Кроме того, что бы использовать express вам понадобится его модифицированная версия (потому что в оригинальной используются специфические для *nix команды)

И еще одна ремарка для новичков, таких как я. Для того, что бы использовать модули нода нужно поместить их в папку node_modules в папке с запускаемым файлом js.
Total votes 9: ↑6 and ↓3+3
Views11K
Comments 2

Шпаргалка по пакетному менеджеру NPM

Node.JS
Translation

npm — это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:

Читать дальше →
Total votes 49: ↑44 and ↓5+39
Views322K
Comments 11

The Node Toolbox

Node.JS
Обнаружив трёхдневной давности правку в вики Node, я жмякнул по приведённой там гиперссылке и попал на сайт-каталог «The Node Toolbox», довольно полезный. Как я понял тотчас же, целью этого сайта является распределение по категориям (или по тегам) всех тех пакетов с джаваскриптами для Node, которые содержатся в каталоге пакетного менеджера npm. Таким образом, сайт этот может быть ценною отправною точкою для поиска пакетов для Node по их предназначению. (В мире открытого кода это средство, как и другие до него, позволяет человеку внимательному не переизобрести ненароком чей-нибудь велосипед.)

Наверху сайта «The Node Toolbox» видна «горячая десятка» наиболее свежих пакетов и десятка наиболее используемых пакетов (по числу зависимостей других пакетов от них) — в общем-то это средство менее полезно и инновационно, чем список категорий, потому что эти рейтинги и без того видны на search.npmjs.org (притом там в рейтингах видать по пятнадцать пакетов, а у «The Node Toolbox» всего лишь по десять).

Более или менее пристальное вглядывание в эти рейтинги на протяжении нескольких последних месяцев привело меня ко впечатлению (быть может, и ошибочному: архивов-то рейтингов я не веду, а полагаюсь на память) о постепенном росте популярности пакета async, сейчас вошедшего ужé в десятку наиболее используемых. Он полезен тем, что содержит два десятка функций, серьёзно упрощающих объединение вызовов асинхронных функций, составление из них более крупных фрагментов алгоритмов. Не могу не отметить, что наблюдаемая популярность вполне заслужена пакетом async. Есть основания думать о части функций пакета async (притом о заметно большой части их) как о своего рода асинхронном аналоге соответствующих функций underscore, используемых при пакетной обработке коллекций (то есть массивов и объектов) — а ведь тот же рейтинг называет пакет underscore наиболее используемым в других пакетах для Node. Логично, что популярен и асинхронный аналог его.

Читать дальше →
Total votes 31: ↑24 and ↓7+17
Views1.5K
Comments 5

Запуск нескольких node.js сайтов на одном сервере

Node.JS
Sandbox
Когда на одном сервере находиться несколько одновременно работающих node.js сайтов, для них необходим общий механизм запуска. Наиболее простой вариант, а также наиболее производительный, это запуск одного приложения, которое подключает все нужные сайты. Механизм подключения должен быть без ограничений для создаваемых сайтов, и максимально простым. Он должен быть стабилен, при критической ошибке на одном из сайтов, другие все равно должны продолжать свою работу.
Все подключаемые веб-приложения должны быть легко переносимы на отдельный хостинг. Необходима поддержка как отдельных доменных имен, так и поддоменов для определенного доменного имени.

Допустим, есть две директории, в которых находятся веб-приложения:

/var/www/domains/, с каталогами site.ru, othersite2.ru и тд.
/var/www/subdomains/, с каталогами site3, othersite4 и тд.

Чтобы сайты были доступны по соответсвующим адресам (site.ru, othersite2.ru, site3.example.com, othersite4.example.com), потребуется запустить данную команду:

$ vhoster -n example.com -s /var/www/subdomains/ -d /var/www/domains/ --port 80 --host 0.0.0.0
vhost: site.ru
vhost: othersite2.ru
vhost: site3.example.com
vhost: othersite4.example.com

Для тех, кому нужен vhoster и интересна его реализация, прошу под кат.
Читать дальше →
Total votes 22: ↑14 and ↓8+6
Views13K
Comments 19

CLI скрипт на CoffeeScript — легко

ProgrammingNode.JSCoffeeScript


Я уже довольно давно использую coffee-консоль как калькулятор. Удобно!

И вот недавно задумался — почему бы не попробовать написать CLI-скрипт на CoffeeScript от начала и до конца? И написал!
Читать дальше →
Total votes 7: ↑3 and ↓4-1
Views1.2K
Comments 12

Полный набор пакетов для разработки с помощью NodeJS

JavaScriptNode.JS
Начал изучать NodeJS. Нигде не нашел актуальный стек мейнстримных библиотек (технологий) применяемых в node. Поэтому решил сам составить список.
Читать дальше →
Total votes 93: ↑83 and ↓10+73
Views51K
Comments 45

Делаем жизнь проще, GruntJS (для новичков)

JavaScriptNode.JS
Sandbox

Что такое GruntJS


Большинство JS разработчиков уже используют какие-то инструменты компоновки для своих разработок, даже если не знают или не используют этот термин. Они объединяют файлы при разработке, уменьшают код JavaScript-а, чтобы ускорить загрузку страниц и конвертировать Sass, или уменьшают количество файлов в CSS для браузера, и много чего другого. Чаще всего это разные инструменты, что есть не очень удобно.

Grunt помогает управлять всеми этими шагами в одном месте и организовать сторонние компоненты.
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Views80K
Comments 19

Создание npm-пакета

Node.JS
Sandbox


Типичная ситуация — в проекте существует некий модуль. Модуль развивается, становится самостоятельным элементом и копируется в другой проект. Потом еще один проект. И еще.
В каждом проекте модуль обновляется и улучшается, и, в какой-то момент, становится не понятно, где актуальная версия. Да ладно, «не понятно где актуальная версия»! Вполне возможно, что в каждом проекте у модуля будут свои модификации, в которые будет достаточно сложно привести в порядок для использования в следующем проекте.
Вполне можно ограничиться созданием отдельного репозитория для модуля, например на GitHub или Bitbucket. Но добавлять репозиторий как субмодуль для GIT — это путь к приключениям.
Но можно пойти дальше, и создать на основе такого модуля npm-пакет. Работать с такими пакетами очень просто. Установить npm-пакет можно с помощью команды npm install, а обновить с помощью npm update.
Подробности
Total votes 31: ↑24 and ↓7+17
Views44K
Comments 4

Управление front-end проектом с помощью NPM

Website developmentJavaScriptTDD
Tutorial
Недавно я задался вопросом поиска инструментария для разработки мобильных приложений на html/css. Из требований были: доступность, легковесность, простота настройки. Выбор пал на встроенный Node менеджер NPM. NPM содержит
инструментарий для базовых тасков типа install и запуска пользовательских скриптов. Также NPM не такой громоздкий, как Grunt и не требует адаптации модулей под себя, т.к. запускает модули с командной строки.

Читать дальше →
Total votes 22: ↑17 and ↓5+12
Views17K
Comments 2

Развиваем фронтенд Дневник.ру. Часть первая. Сборка и проверка JavaScript кода

«Дневник.ру» corporate blogWebsite developmentJavaScript

Вступление


За время существования Дневник.ру (а это более 4-х лет) скопился огромный объем JavaScript кода: часть находилась в отдельном проекте в виде подключаемых файлов, часть определялась прямо на разметке контролов, а часть собиралась прямо в code-behind при помощи StringBuilder. К этому прибавлялись:
  • растущее количество HTTP запросов для получения статичного контента – так, например, на всех страницах только в теге <head> загружалось 11 JavaScript файлов;
  • глобальные переменные, которые иногда перекрывали друг друга;

Решив, что с этим пора что-то делать, мы поставили себе первоочередную задачу: вынести все подключаемые по отдельности файлы из тега <head> в один минифицированный пакет. При этом код делился на сторонний и «наш», который планировалось проверять каким-то синтаксическим анализатором.

В этой статье мы расскажем вам о том, как решили эту задачу.
Читать дальше →
Total votes 28: ↑22 and ↓6+16
Views14K
Comments 19

Особенности npm и хранение node_modules в git

Website developmentJavaScriptNode.JS
Translation


Для управления зависимостями в проекте, node.js, как и многие другие платформы, предоставляет собственный пакетный менеджер — npm. И несмотря на то, что он внешне похож, например, на Ruby Gems, и вроде бы выполняет те же самые функции, npm обладает некоторыми особенностями, которые стоит учитывать при разработке приложений на node.js. Одна из таких особенностей — это способ хранения директории node_modules в проекте. Многие, по аналогии с другими системами, оставляют в проекте только package.json с зафиксированными версиями модулей, а node_modules добавляют в .gitignore. Такая стратегия не всегда верна, если мы обратимся в FAQ на npmjs.org, то увидим там следующее:
Q: Стоит ли хранить node_modules в git?
A: Mikeal Rogers очень хорошо ответил на этот вопрос:
http://www.mikealrogers.com/posts/nodemodules-in-git.html
tl;dr
  • Храните node_modules в git для проектов, которые требуется разворачивать, таких как вебсайты и приложения.
  • Добавляйте node_modules в .gitignore для библиотек и повторно используемых модулей.
  • Используйте npm для управления зависимостями в dev окружении, но не в скриптах используемых для деплоя.


Под катом перевод статьи Mikeal Rogers, в котором подробно описывается, с чем связан такой непривычный подход.
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Views24K
Comments 33

yo n — быстрое начало для нового node.js проекта

JavaScriptNode.JS
Привет, Друзья!

Я просто хотел поделиться с вами простым проектом, который, надеюсь, поможет сохранить несколько минут при создании очередного node.js пакета. Вот все, что сделает проект, после набора в командной строке yo n:

1. Запустит «npm init»
2. На основе ваших ответов из package.json, создаст файл с лицензией, readme, начальный файл и включит тестовый фреймворк.
3. Создаст и опубликует проект на GitHub'e.

А вот и видео всего описанного выше в действии:



Исходники на гитхабе: github.com/anvaka/generator-n

Надеюсь, пригодится :)!

PS: «yo n» в два раза короче, чем «npm init»
Total votes 20: ↑13 and ↓7+6
Views4.5K
Comments 2

Несколько полезностей по работе с NPM

Website developmentJavaScriptNode.JS
Sandbox
Recovery mode
image

NPM — пакетный менеджер для node.js, аналог GEM в RoR. В статье несколько советов по его использованию.

Установка пакетов


Все знают
# Устанавливает пакет express
npm install express

Какие варианты еще есть?
Читать дальше →
Total votes 96: ↑84 and ↓12+72
Views86K
Comments 12

Продвинутая работа с подписками в еvent-driven архитектуре в JavaScript

Website developmentJavaScript
Sandbox
Одним из самых распространенных методов построения JavaScript приложений является событийно-ориентированный подход, который предоставляет большую гибкость и позволяет сделать модули системы максимально независимыми друг от друга. Эта парадигма набирает все большую популярность и не редко становится частью многих фреймворков. Но, как правило, с ростом приложения увеличивается и количество событий/подписок, управлять и следить за которыми самому разработчику становится все сложнее, не говоря уже об адаптации новых сотрудников на проекте.

Справиться со всеми этими проблемами, призван помочь Capo – модуль, который служит для управления событиями в event-driven js архитектуре и решает один из самых больших недостатков шаблона Mediator – неопределенность триггеров и подписчиков.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Views8.5K
Comments 18

Пишем генератор для Yeoman.io

Website developmentJavaScriptNode.JS
Sandbox
Tutorial
Recovery mode
image
Доброго времени суток, хабрасообщество! В этой статье я хочу описать опыт создания генератора для scaffolding системы Yeoman. Прежде всего, я был немного удивлён тем, что данная система и работа с ней не были описаны на хабре, разве что одно маленькое упоминание из далекого 2012 года: Yeoman.io. Как я уже написал выше, в данной статье я буду рассматривать поэтапное создание yeoman-генератора для ваших проектов.
Читать дальше →
Total votes 20: ↑14 and ↓6+8
Views9.6K
Comments 4