Недавно произошел инцидент, из-за которого сломались множество пакетов NPM. Причиной стал отзыв своих модулей одним из разработчиков на почве конфликта с компанией-производителем ПО, которая отобрала приглянувшееся имя пакета. Точку зрения разработчика можно почитать здесь (англ.). А под катом находится ответ менджера компании Kik.Читать полностью »
Рубрика «npm» - 9
Поговорим о том, как сломать Интернет
2016-03-24 в 20:39, admin, рубрики: kik, npm, а ведь могли бы купить за $30000, вежливые люди, Законодательство и IT-бизнес, никто не читает теги, патентные войны, патентование, тем более на МегамозгеNPM и left-pad: мы разучились программировать?
2016-03-24 в 13:37, admin, рубрики: javascript, npm, Веб-разработка, зависимости, пакетный менеджер, ПрограммированиеАвтор — Дэвид Хейни (David Haney), ведущий инженер-программист Stack Overflow
Итак, разработчики, время для серьёзного разговора. Вы уже наверное в курсе, что на этой неделе React, Babel и куча других популярных пакетов на NPM сломались. Причина довольно удивительная.
Простой пакет NPM под названием left-pad был установлен как зависимость в React, Babel и других пакетах. Модуль, который на момент написания этого поста, имеет 11 звёзд на Github (сейчас 323 — прим.пер). Весь пакет состоит из 11 простых строчек, которые реализуют примитивную функцию вставки пробелов в левой части строк. Если какие-то из ссылок когда-нибудь умрут, вот его код:
module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while (++i < len) {
str = ch + str;
}
return str;
}
Что меня беспокоит, так это такое большое количество пакетов, где установлена зависимость от простой функции набивки строки пробелами, вместо того чтобы потратить 2 минуты и написать эту базовую функцию самому.
Читать полностью »
Один разработчик чуть не «сломал» пакетный менеджер NPM
2016-03-23 в 16:56, admin, рубрики: javascript, kik, node.js, npm, open source, пакетный менеджерВеб-разработчик Азер Кочулу (Azer Koçulu), автор более 250 модулей для Node.js, попал в неприятную ситуацию. В своём блоге он пишет, что несколько недель назад получил письмо от юриста компании Kik (мессенджер) с требованием отозвать модуль с аналогичным названием kik из пакетного менеджера NPM (Node Package Manager).
Программист отказался, тогда юрист обратился напрямую в NPM, и администрация проекта удовлетворила его требование, сменив владельца модуля kik без разрешения автора.
Азер Кочулу был крайне недоволен этим. Настолько недоволен, что решил в ответ «освободить» (то есть отозвать) все свои модули — более 250 модулей NPM. К сожалению, среди них оказался и left-pad — маленький модуль из 11 строк кода на JavaScript. Он используется при установке зависимостей между пакетами через NPM, в том числе в Node.js, JavaScript-транскомпиляторе Babel и огромном количестве других билдов. Только за прошлый месяц left-pad скачали 2 486 696 с сервера NPM, по их статистике.
Читать полностью »
10 привычек довольного node.js разработчика
2016-02-23 в 8:28, admin, рубрики: ES6, es7, javascript, Node, npm, Блог компании Voximplant, Веб-разработка, Программирование, разработка 
К концу 2015 года в распоряжении JavaScript разработчиков образовалось огромное количество инструментов. В этой экосистеме легко потеряться, поэтому успешные команды следуют выработанным правилам, которые позволяют не терять время и сохранять здоровье проектов. Под катом перевод статьи 2016 года от команды Heroku, в которой они рассказывают о десяти привычках веб разработчиков, у которых все работает и ничего не болит. Скорее всего 80% написанного вы уже знаете – тем интереснее вам будет прочитать об оставшихся двух приемах!
Читать полностью »
Загрузчик модулей для node js с поддержкой локальных модулей и загрузки модулей по требованию
2016-01-13 в 9:06, admin, рубрики: javascript, node.js, npmЯ — frontend разработчик и в последнее время мне все чаще приходится пользоваться нодой, будь то использование webpack-а для сборки проекта, либо настройка различных gulp тасков. Хоть у меня и нету большого опыта в использование ноды, со временем у меня накопилось три вещи, которые мне хотелось бы улучшить при работе с модулями:
- Избавиться от кучи require-ов в начале каждого файла
- Подгружать модули только тогда, когда они нужны(особенно это актуально для gulp тасков)
- Иметь возможность работать с локальными модулями проекта, как с внешними модулями, то есть вместо, например,
вызова var core = require('../../deep/deep/deep/core/core'), вызывать этот же модуль вот так var core = require('core')
Для решения всех трех задач по отдельности есть уже различные модули и решения, но во-первых, все они имеют, как мне кажется, недостатки, а во-вторых, ни одно из решений не решает все три проблемы вместе.
Читать полностью »
jspm — менеджер пакетов для браузера
2015-04-20 в 8:12, admin, рубрики: bower, javascript, jspm, npm, Веб-разработка 
- jspm — это менеджер пакетов для SystemJS, сделаный на основе ES6 module loader
- Позволяет загружать все форматы модулей (ES6, AMD, CommonJS и Globals) непосредственно из npm или Github с управлением зависимостями. Также позволяет использовать любые не стандартные источники модулей, реализованные через Registry API
- В разработке: Загружает модули ES6 как отдельные файлы, и компилирует их в прямо в браузере
- В продакшене: Собирает модули в один или несколько бандлов, с единой командой для запуска всего приложения
Начнем
Устанавливаем jspm cli
npm install jspm -g
Некоторые тонкости работы с Github и NPM — со вкусом ES6
2015-03-06 в 17:00, admin, рубрики: ecmascript 6, Git, github, javascript, node.js, npm, баджики, велосипедостроение Здравствуйте, меня зовут Александр, и я пишу велосипеды по выходным программист.

В нашем клубе анонимных велосипедостроителей считается особым шиком не только сотворить очередной шедевр, но и поделиться им с сообществом. Так как существует просто огромное количество статей о том, как выложить проект на Github или NPM, я не буду в 100500 раз пересказывать одно и то же.
В сегодняшней статье я хочу осветить некоторые неочевидные тонкости, которые, возможно, помогут вам получить больше удовольствия от процесса художественного выпиливания лобзиком очередного велосипеда.
Использование npm для глобальной установки приложений, наделённых GUI и основанных на nw.js
2015-03-03 в 9:25, admin, рубрики: cli, GUI, javascript, Node, node-webkit, node.js, nodejs, npm, nw.js, path, гипертекстовый векторный Фидонет, гипертекстовый Фидонет, графический интерфейс, графический интерфейс пользователя, командная строка, кросс-платформенность, метки: Node.js, NodeJS
Команда «npm install» в менеджере пакетов npm чаще всего употребляется для локальной установки зависимостей некоторого модуля, совершаемой в его подкаталоге «/node_modules».
Однако возможен и запуск этой команды с ключом «-g» (от слóва «global»). Он обеспечивает установку указанного ей пакета в некоторое глобальное (то есть общее для всей системы) место. Кроме того, в PATH (для последующего запуска из любого желаемого каталога) оказывается прописанною та команда, которая была указана в свойстве «"bin"» в файле package.json у установленного пакета.
Таким общим местом, согласно документации, под Windows служит подкаталог «/node_modules» в каталоге установки Node. В остальных же системах таким общим местом чаще всего оказывается каталог «/usr/local/lib/node_modules» (тогда как Node там устанавливается в каталог «/usr/local/bin»).
Обыкновенно этот подход употребляется для глобальной установки различных утилит, предназначенных для употребления из командной строки. Вот некоторые примеры:
- Команда «npm install jshint -g» обеспечивает появление в PATH команды «jshint», служащей для запуска JSHint.
- Команда «npm install browserify -g» обеспечивает появление в PATH команды «browserify», служащей для запуска Browserify.
- Команда «npm install less -g» обеспечивает появление в PATH команды «lessc», служащей для запуска Less.js.
Однако на CLI (на командной строке) свет клином не сошёлся — и читателям Хабрахабра должно уж вполне быть известно, что приложение на языке JavaScript, употребляющее API Node.js, можно снабдить и GUI (графическим интерфейсом пользователя), сочинённым на языках HTML и CSS. Для этого придётся и запускать такое приложение вместо Node на том движке, который до прошлого года назывался node-webkit, а в нынешнем (2015) году оказался 14 января переименованным в nw.js.
Ваши GUI-приложения также могут глобально быть установлены в системе из npm-пакета при помощи npm. Давайте поговорим об этом.
Операционные системы, потерянные и обретённые внебраузерным джаваскриптом
2015-02-21 в 22:47, admin, рубрики: Adobe PhoneGap, android, Apache Cordova, cordova, io.js, iojs, iOS, JXcore, mac os x, Node, Node OS, node-sqlite3, node-webkit, node.js, nodejs, NodeOS, npm, Nubisa, nw.js, OS X, phonegap, SpiderMonkey, sqlite, sqlite3, Windows 2003, Windows 2003 Server, Windows XP, кросс-платформенность, кроссплатформенность, метки: Node.js, Node.js, NodeJS, NodeJSВ прошлом году понятие «внебраузерный JavaScript» чаще всего означало движок Node.js (а не, допустим, Rhino или SpiderMonkey, сильно уступающие ему в популярности в этой области) или какой-нибудь итог его встраивания (например, node-webkit).
В нынешнем году в игру вступают форки Node (например, io.js), и их также начинают встраивать — например, проект node-webkit переименовался в nw.js, потому что теперь он использует не Node, а io.js (да и не WebKit, а Blink — с тех давних пор, как Chromium перешёл на этот движок).
Для программистов это означает, в частности, что может отвалиться (или, наоборот, появиться) поддержка той или иной операционной системы. Давайте поговорим об этом.
Какие операционные системы перестают поддерживаться?
Во-первых, первые версии io.js нельзя было установить на Windows XP, нельзя было установить и на Windows 2003. Ещё в середине января казалось, что с этим ничего нельзя поделать: объяснение «io.js компилируется в Visual Studio 2013 Windows Desktop Edition, потому что движок V8 стал полагаться на возможности C++11» воспринималось как приговор — однако затем разработчики поправили дело, так что в файле CHANGELOG.md ветви v1.x можно прочесть, что поддержка этих версий системы Windows возвратилась в io.js, начиная от версии io.js 1.0.3 (20 января).
Подобно кругам по воде, эти изменения прошли по всей экосистеме движков; например, в nw.js версии 0.12.0-alpha3 на поддержку ещё можно надеяться (хотя лично я ещё не успел погонять эту версию на Windows XP), а в предыдущих альфа-версиях её точно нет (потому что они основаны на более ранних версиях io.js).
Во-вторых, KaneUA 19 февраля упомянул, что io.js не поддерживает тридцатидвухбитные версии OS X, в отличие от Node.
Поддержка каких операционных систем может появиться?
Фундаментальная проблема пакетных менеджеров для языков программирования
2015-02-09 в 18:33, admin, рубрики: bundler, npm, пакетные менеджеры, Программирование, Системы управления версиями, метки: пакетные менеджеры Почему существует столько много различных пакетных менеджеров? Их можно встретить как во многих операционных системах (apt, yum, pacman, Homebrew), так и работая со многими языками программирования (Bundler, Cabal, Composer, CPAN, CRAN, CTAN, EasyInstall, Go Get, Maven, npm, NuGet, OPAM, PEAR, pip, RubyGems, и т.д. и т.п.). «Каждый язык программирования нуждается в собственном пакетном менеджере, это уже стало общепризнанной истиной». Что за необъяснимое притяжение заставляет языки программирования, один за другим, скатываться в этот обрыв? Почему бы нам просто не использовать уже существующие пакетные менеджеры?
Читать полностью »

