11 корисних хаків з npm

5 хв. читання

Використовувати npm ефективно буває непросто. В нього вбудовано дуже багато фіч, і тому є сенс пройтися по дуже корисних, але маловідомих. Ми зібрали список з 11 найкорисніших, що пришвидшать розробку вашого додатку.

1. Відкрити домашню сторінку пакету

npm home $package

Виконання команди home призведе до відкриття домашньої сторінки пакету. Наприклад, якщо аргументом передати lodash, то ви потрапите на веб-сайт Lodash. Її можна запускати з будь якої папки (не обов'язково папки поточного проекту). Навіть якщо пакет не інстальовано.

2. Відкрити репозитарій пакету

npm repo $package

Дуже схожа на попередню команду, але відкриває не сайт, а GitHub-репозитарій проекту. В іншому ж її використання таке саме як і в home.

3. Перевірити неоновлені залежності

npm outdated

Запустивши цю команду ви отримаєте таблицю, в якій будуть вказані пакети, що можуть бути оновленими, також там вказується поточна версія, потрібна версія та остання доступна.

11 корисних хаків з npm

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

11 корисних хаків з npm

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://web.archive.org/web/20230321163620/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://web.archive.org/web/20230321163620/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)
  }

}
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.8K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація