Переводчик: Front-end Xiaozhi
оригинал:medium.com/@like ET Cam два часа…
Ставь лайк и смотри, поиск в WeChat【Переезд в мир】Обратите внимание на этого человека, который не имеет большого фабричного прошлого, но имеет восходящий и позитивный настрой. эта статья
GitHub
GitHub.com/QQ449245884…Он был включен, статьи были классифицированы, и многие мои документы и учебные материалы были систематизированы.
Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.
Каждый день миллионы разработчиков используютnpm
илиyarn
построить проект. бегатьnpm init
илиnpx create- response -app
etc являются предпочтительным способом создания проектов JS, будь то для клиентской или серверной части или настольных приложений.
ноnpm
Не просто запускать проекты или устанавливать пакеты. В этой статье мы познакомимnpm
13 советов, как получить максимальную отдачу отnpm
: от простых ярлыков до пользовательских сценариев.
Поскольку многие из нас используютnpm
, даже небольшая экономия времени может оказать существенное влияние в долгосрочной перспективе. Эти советы предназначены для начинающих и разработчиков среднего уровня, но даже если вы опытный разработчик, я надеюсь, что вы все равно сможете найти одну или две функции, с которыми раньше не сталкивались.
основное содержание
-
Изучите основные сочетания клавиш
-
Установить свойства инициализации npm по умолчанию
-
Сделайте скрипты кроссплатформенными
-
Запуск скриптов параллельно
-
Запуск скриптов в разных каталогах
-
Отложить выполнение скрипта до тех пор, пока порт не будет готов
-
Перечислите и выберите доступные сценарии
-
сценарии до и после запуска
-
Контроль версии приложения
-
Отредактируйте package.json из командной строки.
-
Автоматически настройте и откройте репозиторий github
-
настроить
npm init
сценарий -
Зафиксируйте свой первый коммит на GitHub, используя собственный скрипт инициализации npm.
1. Изучите основные сочетания клавиш
Мы начнем с основ, а изучение наиболее распространенных сокращений npm сэкономит много времени в долгосрочной перспективе.
-
Установка — Общее:
npm install
, сокращенно:npm i
. -
Тест — Общее:
npm test
, сокращенно:npm t
. -
Справка — Общее:
npm --help
, сокращенно:npm -h
. -
Глобальные флаги — Общие:
--global
, сокращенно:-g
. -
Сохранить как зависимости разработки - General:
- save-dev
, сокращенно:-D
. -
Параметры инициализации npm по умолчанию — общие:
npm init --yes
илиnpm init --force
, сокращенно:npm init -y
илиnpm init -f
мы знаем, используя-save
или-S
чтобы сохранить пакет, но теперь это значение по умолчанию. Чтобы установить пакет без его сохранения, вы можете использовать——no-save
логотип.
Менее распространенные сочетания клавиш
Есть также несколько менее распространенных ярлыков, а именно:
-
Информация об инсталляционном пакете будет добавлена в
optionalDependencies
(зависимость от необязательного этапа) - Общее:--save-optional
, сокращенно:-O
. -
Точно установить указанную версию модуля - общее:
--save-optional
, сокращенно:-O
.
Если вам нужно сохранить пакет npm локально или выбрать набор доступных пакетов с помощью загрузки одного файла, вы можете использовать--save-bundle
или-B
свяжите их вместе и используйтеnpm pack
Получите пачку.
ярлык для рута
.
Нотация обычно используется для обозначения корневого каталога приложения, точки входа приложения в терминологии npm, т.е.package.json
указано как "main
" стоимость
{
"main": "index.js"
}
Этот ярлык также можно использовать для таких вещей, какnpx create-react-app .
такая команда. Следовательно, можно запуститьnpx create-react-app .
, Вместо того, чтобы использоватьnpx create-react-app my-app
создать новыйmy-app
содержание.
2. Установите свойства инициализации npm по умолчанию
при бегеnpm init
При запуске нового проекта вы можете снова и снова вводить данные конфигурации. Если да, то вы можете быть главным ответственным за проект. Иногда, чтобы сэкономить время, вы можете установить значения по умолчанию для этих полей, например:
npm config set init.author.name "Joe Bloggs"
npm config set init.author.email "JoebLoggs@gmail.com"
npm config set init.author.url "Joebloggs.com"
npm config set init.license "MIT"
Чтобы проверить, правильно ли добавлены эти свойства, введите в терминалеnpm config edit
Просмотр информации о профиле. Конечно, вы также можете редактировать информацию непосредственно в открытом файле конфигурации. Если вы хотите изменить глобальноеnpm
установить, использоватьnpm config edit -g
.
Для повторной инициализации настроек по умолчанию можно использовать следующий скрипт. Первая строка заменяет файл конфигурации пустой строкой, а вторая строка повторно заполняет файл конфигурации настройками по умолчанию.
echo "" > $(npm config get userconfig)
npm config edit
Приведенный выше сценарий сбросит пользовательские настройки по умолчанию, а приведенный ниже сценарий сбросит глобальные настройки по умолчанию.
echo "" > $(npm config get globalconfig)
npm config --global edit
3. Сделайте скрипты кроссплатформенными
Любой код, который запускается в командной строке, рискует столкнуться с проблемами совместимости, особенно между системами на основе Windows и Unix (включая Mac и Linux). Это не проблема, если вы работаете только над конкретным проектом, но во многих случаях кросс-платформенная совместимость необходима: любой проект с открытым исходным кодом или совместный проект, а также примеры и обучающие проекты должны работать независимо от операционной системы. система что есть.
К счастью, решение простое. Есть несколько вариантов на выбор, но лучшие из нихcross-env
. использоватьnpm i -D cross-env
Установите его как зависимость разработки. Затем включите ключевое слово перед любыми переменными среды.cross-env
,так:
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/wepack.config.js"
}
}
кросс-окружениеСамый простой способ добиться кроссплатформенной совместимости, но есть два других популярных инструмента, которые могут помочь с кроссплатформенной совместимостью:
-
rimrafМожет быть установлен глобально для запуска кроссплатформенных скриптов
-
ShellJS— это переносимая реализация команд оболочки Unix в Node.js API.
4. Запустите скрипты параллельно
можно использовать&&
для последовательного запуска двух или более процессов. Но как насчет параллельного запуска скриптов?Для этого мы можем выбирать из различных пакетов npm.concurrentа такжеnpm-run-allявляется самым популярным решением.
Сначала установите зависимости разработки через npm i -D одновременно. Затем добавьте его в скрипт в следующем формате:
{
"start": "concurrently \"command1 arg\" \"command2 arg\""
}
5. Запустите скрипт в другом каталоге
Иногда у вас есть множество папок.package.json
файловое приложение. Было бы удобно получить доступ к этим сценариям из корневого каталога, а не переходить в другую папку каждый раз, когда вы хотите запустить сценарий, есть два способа сделать это.
Первый — вручную нажать cd и выполнить соответствующую команду:
cd folder && npm start && cd ..
Но есть более элегантное решение, которое заключается в использовании--prefix
Флаг указывает путь:
npm start --prefix path/to/your/folder
Ниже приведен пример этого решения в рабочем приложении, которое мы хотим запустить на фронтенде (в каталоге клиента) и на бэкэнде (в каталоге сервера).npm start
.
"start": "concurrently \"(npm start --prefix client)\" \"(npm start --prefix server)\"",
6. Отложите запуск скрипта, пока порт не будет готов
Часто во время разработки приложения с полным стеком нам может понадобиться запустить и сервер, и клиент.wait-on
Модуль node предоставляет удобный способ гарантировать, что процессы будут выполняться только тогда, когда определенные процессы будут готовы: в нашем случае у нас есть определенный порт.
Например, это то, что я использую в проекте Electron, в котором используется интерфейс React.dev
сценарий. При одновременном использовании скрипт загружает слой презентации и окно Electron параллельно. Однако, используяwait-on
,только вhttp://localhost:3000
После запуска откроется окно Electron.
"dev": "concurrently \"cross-env BROWSER=none npm run start\" \"wait-on http://localhost:3000 && electron .\"",
Кроме того, React по умолчанию открывает окно браузера, но для разработки на Electron в этом нет необходимости. Мы можем передавать переменные окруженияBROWSER=none
чтобы отключить это поведение.
7. Перечислите и выберите доступные сценарии
списокpackage.json
Скрипт, доступный в файле, прост: достаточно зайти в корень проекта и набрать в терминалеnpm run
.
Но есть более удобный способ получить список скриптов, которые можно запустить сразу: Для этого глобально установите модуль NTL (npm task list):
npm i -g ntl
Затем в папке проекта запуститеntl
можно получить список доступных сценариев и выбрать один из них для запуска.
8. Запуск пре- и пост-скриптов
вы можете быть знакомы сprebuild
а такжеpostbuild
Такие скрипты позволяют вам определять код для запуска до или после скрипта сборки. Но на самом деле,pre
а такжеpost
Может быть добавлен перед любым скриптом, включая пользовательские скрипты.
Это не только сделает ваш код чище, но и позволит запускатьpre
а такжеpost
сценарий.
9. Контроль версий приложений
Вместо того, чтобы вручную изменять версию приложения, npm предоставляет для этого несколько полезных ярлыков. Чтобы увеличить версию, запуститеnpm version加上
major,
minor或
патч`:
// 1.0.0
npm version patch
// 1.0.1
npm version minor
// 1.1.0
npm version major
// 2.0.0
В зависимости от того, как часто вы обновляете свое приложение, вы можете сэкономить время, увеличивая номер версии при каждом развертывании с помощью следующего сценария:
{
"predeploy": "npm version patch"
}
10. Отредактируйте package.json из командной строки
package.json
является обычнымjson
файл, так что вы можете использовать библиотеку инструментовjsonРедактировать из командной строки. Это изменениеpackage.json
Предоставляет еще один новый способ создания ярлыков помимо стандартных. Установить глобально:
npm install -g json
Затем вы можете использовать его для использования-I
Внесите правки на месте. Например, чтобы добавить новый скрипт «foo» со значением «bar», напишите:
json -I -f package.json -e 'this.scripts.foo="bar"'
11. Автоматически настройте и откройте репозиторий github
еслиpackage.json
В файле есть "репозиторий", можете войтиnpm repo
Откройте его в браузере по умолчанию.
Если ваш проект уже подключен к удаленному репозиторию и установлен в командной строкеgit
, то вы можете использовать эту команду, чтобы найти репозиторий подключений
git config --get remote.origin.url
Еще лучше, если вы следовали приведенным выше советам и установилиjson
модуль, вы можете использовать сценарий ниже, чтобы автоматически добавить правильный репозиторий вpackage.json
json -I -f package.json -e "this.repository=\"$(git config --get remote.origin.url)\""
12. Настроитьnpm init
сценарий
Пойдем дальше и воспользуемся собственнымnpm init
Скрипт, который берет URL-адрес репозитория GitHub и автоматически отправляет нашу первую фиксацию. В этом совете мы обсудим, как создать пользовательскийnpm init
сценарий. В следующем (и последнем) трюке мы объединим git.
можно перенаправить в домашний каталог с помощью.npm-init.js
файл для редактированияnpm init
сценарий. (В Windows обычноc/Users/<用户名>
, на Mac это/Users/<用户名>
).
Давайте начнем с создания в нашем домашнем каталоге.nmm-init.js
документ. Чтобы убедитьсяnpm init
указывает на правильный файл, вы можете запустить:
npm config set init-module ~\.npm-init.js
в интеграцииgit
Перед этим простой.npm-init.js
файл, который эмулирует файл по умолчаниюnpm init
Эта проблема
module.exports = {
name: prompt('package name', basename || package.name),
version: prompt('version', '0.0.0'),
decription: prompt('description', ''),
main: prompt('entry point', 'index.js'),
repository: prompt('git repository', ''),
keywords: prompt(function (s) { return s.split(/\s+/) }),
author: prompt('author', 'Joe Bloggs <joe.bloggs@gmail.com> (joebloggs.com)'),
license: prompt('license', 'ISC')
}
каждый вопрос следуетnameInPackage
модель:prompt('nameInPrompt','defaultValue')
. Чтобы без проблем установить значение по умолчанию, достаточно удалитьprompt
метод.
Если вы хотите вернуться к значениям по умолчанию, просто удалите.npm-init.js
.
13. Используйте собственный скрипт инициализации npm, чтобы зафиксировать свой первый коммит на GitHub.
Чтобы объединить команду git в.npm-init.js
файл, вам нужен способ управления командной строкой. Для этого мы можем использоватьchild_process
модуль. Включите его в начало файла, потому что нам нужно толькоexecSync
функцию, поэтому вы можете получить ее самостоятельно, используя синтаксис присваивания деструктора:
const { execSync } = require('child_process');
Я также создал вспомогательную функцию, которая выводит результат функции на консоль:
function run(func) {
console.log(execSync(func).toString())
}
Наконец, нам будет предложено ввести URL-адрес репозитория GitHub, если он предоставлен, мы сгенерируемREADME.md
файл и начнем нашу первую фиксацию.
repository: prompt('github repository url', '', function (url) {
if (url) {
run('touch README.md');
run('git init');
run('git add README.md');
run('git commit -m "first commit"');
run(`git remote add origin ${url}`);
run('git push -u origin master');
}
return url;
})
В основном,.npm-init.js
Файл примерно такой:
const { execSync } = require('child_process');
function run(func) {
console.log(execSync(func).toString())
}
module.exports = {
name: prompt('package name', basename || package.name),
version: prompt('version', '0.0.0'),
decription: prompt('description', ''),
main: prompt('entry point', 'index.js'),
keywords: prompt(function (s) { return s.split(/\s+/) }),
author: prompt('author', 'Joe Bloggs <joe.bloggs@gmail.com> (joebloggs.com)'),
license: prompt('license', 'ISC'),
repository: prompt('github repository url', '', function (url) {
if (url) {
run('touch README.md');
run('git init');
run('git add README.md');
run('git commit -m "first commit"');
run(`git remote add origin ${url}`);
run('git push -u origin master');
}
return url;
}),
}
файл package.json:
{
"name": "Custom npm init",
"version": "0.0.0",
"decription": "A test project, to demonstrate a custom npm init script.",
"main": "index.js",
"keywords": [],
"author": "Joe Bloggs <joe.bloggs@gmail.com> (joebloggs.com)",
"license": "ISC",
"repository": {
"type": "git",
"url": "git+https://github.com/JoeBloggs/custom.git"
},
"bugs": {
"url": "https://github.com/JoeBloggs/custom/issues"
},
"homepage": "https://github.com/JoeBloggs/custom#readme"
}
Вы также можете пойти дальше, включив GitHub API, чтобы вам не нужно было создавать новый репозиторий и оставлять эту часть на ваше усмотрение.
В целом, надеюсь, этот пост дал вам представление о том, чего вы можете достичь с помощью npm, и показал некоторые способы повышения производительности — знаете ли вы общие ярлыки или максимально используете скрипты.package.json
или напишите собственную версиюnpm init
.
Ошибки, которые могут существовать после развертывания кода, не могут быть известны в режиме реального времени.Чтобы решить эти ошибки впоследствии, много времени тратится на отладку журнала.Кстати, я рекомендую всем полезный инструмент мониторинга ошибок.Fundebug.
общаться с
Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.