11 корисних хаків з npm
Використовувати npm ефективно буває непросто. В нього вбудовано дуже багато фіч, і тому є сенс пройтися по дуже корисних, але маловідомих. Ми зібрали список з 11 найкорисніших, що пришвидшать розробку вашого додатку.
1. Відкрити домашню сторінку пакету
npm home $package
Виконання команди home призведе до відкриття домашньої сторінки пакету. Наприклад, якщо аргументом передати lodash, то ви потрапите на веб-сайт Lodash. Її можна запускати з будь якої папки (не обов'язково папки поточного проекту). Навіть якщо пакет не інстальовано.
2. Відкрити репозитарій пакету
npm repo $package
Дуже схожа на попередню команду, але відкриває не сайт, а GitHub-репозитарій проекту. В іншому ж її використання таке саме як і в home.
3. Перевірити неоновлені залежності
npm outdated
Запустивши цю команду ви отримаєте таблицю, в якій будуть вказані пакети, що можуть бути оновленими, також там вказується поточна версія, потрібна версія та остання доступна.

4. Перевірити встановлені пакети на не вказані в package.json
npm prune
Коли ви запускаєте prune, npm CLI пройде по вашому package.json та порівняє його вміст з пакетами в /node_modules, а потім виведе список тих пакетів, що є в директорії /node_modules, але не вказані як залежності. А потім вона їх видалить.
5. Заблокувати версії залежностей
npm shrinkwrap
Ця команда генерує в проекті файл npm-shrinkwrap.json, що містить поточні версії всіх встановлених пакетів в проекті. І при запуску npm install він спершу буде читати дані з файлу npm-shrinkwrap.json, і тільки якщо його не знайде — з package.json
Але якщо вам потрібно узгоджувати дані між package.json, npm-shrinkwrap.json та node_modules, то слід використовувати npm-shrinkwrap

6. Використовувати npm v3 з Node.js v4 LTS
npm install -g npm@3
Встановлення npm@3 глобально призведе до оновлення npm з версії 2 до третьої, включаючи оновлення Node.js до четвертої версії.
7. Дозволити використання npm install -g без sudo
npm config set prefix $dir
Після запуску цієї команди з вказанням директорії, куди npm буде інсталювати глобальні пакети, вам більше не потрібно використовувати sudo.
І не забудьте надати користувачу право володіння директорією командою chown -R $USER $dir та додати $dir/bin до змінної оточення PATH.
8. Встановити суфікс за умовчуванням для пакетів
npm config set save-prefix ~
Тильда (~) більш консервативна, ніж ^, який npm використовує за умовчуванням при інсталяції нового пакету з опціями --save чи --save-dev. Тильда прив'язує версію до мінорної, тобто командою npm update можна інсталювати патчі, в той час як ^ прив'язує версію до мажорної, що дозволяє також інсталювати невеличкі мінорні оновлення.
9. Ігнорування devDependencies в продакшені
npm install --production
Цією командою можна встановити пакети вказані в dependencies, ігноруючи ті, що в devDependencies і потрібні лише для розробки.
Також ви можете встановити змінній оточення NODE_ENV значення production, щоб devDependencies не встановлювалися за умовчуванням.
10. Будьте обережними при використанні .npmignore
Якщо ви не використовували цей файл, то слід сказати, що він ідентичний .gitignore з деякими важливими доповненнями.
Але мало хто розуміє, що при доданні файлу .npmignore, файл .gitignore ігнорується (яка іронія). Тому вам потрібно слідкувати за своїми .*ignore, щоб не опублікувати приватні чи просто непотрібні дані.
11. Автоматизація npm init значеннями за умовчуванням
Коли ви запускаєте npm init в новому проекті, він задає купу питань і на основі відповідей будує файл package.json. Щоб прискорити цей процес ми можемо додати до деяких полів значення за умовчуванням. Ось так:
npm config set init.author.name $name
npm config set init.author.email $email
А якщо цього вам недостатньо, то ви можете написати власний init-скрипт і встановити його ось так:
npm config set init-module ~/.npm-init.js`
Ось невеличкий скрипт, що запитує потрібні налаштування та створює GitHub-репозитарій. Впевніться, що вказали ваш username замість YOUR_GITHUB_USERNAME або/та вказали його в змінній оточення GITHUB_USERNAME.
var cp = require('child_process');
var priv;
var USER = process.env.GITHUB_USERNAME || 'YOUR_GITHUB_USERNAME';
module.exports = {
name: prompt('name', basename || package.name),
version: '0.0.1',
private: prompt('private', 'true', function(val){
return priv = (typeof val === 'boolean') ? val : !!val.match('true')
}),
create: prompt('create github repo', 'yes', function(val){
val = val.indexOf('y') !== -1 ? true : false;
if(val){
console.log('enter github password:');
cp.execSync("curl -u '"+USER+"' https://api.github.com/user/repos -d " +
"'{\"name\": \""+basename+"\", \"private\": "+ ((priv) ? 'true' : 'false') +"}' ");
cp.execSync('git remote add origin '+ 'https://github.com/'+USER+'/' + basename + '.git');
}
return undefined;
}),
main: prompt('entry point', 'index.js'),
repository: {
type: 'git',
url: 'git://github.com/'+USER+'/' + basename + '.git' },
bugs: { url: 'https://github.com/'+USER'/' + basename + '/issues' },
homepage: "https://github.com/"+USER+"/" + basename,
keywords: prompt(function (s) { return s.split(/\s+/) }),
license: 'MIT',
cleanup: function(cb){
cb(null, undefined)
}
}
1657 6
Коментарі:
0
Костя Третяк