Я только что провел последний месяц, создавая различные проекты на JavaScript, чтобы отточить свои навыки разработки программного обеспечения. После запуска примерно четырех проектов я обнаружил, что снова и снова повторял одни и те же шаги при настройке проекта. Стало слишком сложно искать ссылки, которые я использовал при настройке предыдущего проекта. Быстро стало очевидно, что было бы удобно, если бы все эти шаги были в одном месте, куда я мог бы легко добраться. Хм…. лишь бы было место для этого 🤔.
Прочитав несколько статей в Интернете, я решил составить этот пост, в котором будет представлен мой подход к созданию проектов. Надеюсь, он будет полезен и вам. В этом посте будут описаны шаги, необходимые для быстрой загрузки проекта JavaScript с использованием npm в качестве менеджера пакетов и webpack в качестве сборщика. Я также дам вам возможность попрактиковаться в некоторых передовых методах, включив зависимости для облегчения линтинга. Добро пожаловать 😉. Тогда давайте к этому.
НПМ
Начнем с менеджера пакетов npm. Это полезно для использования и обмена пакетами между разработчиками. Вы можете легко загрузить и установить его, выполнив шаги здесь (если он у вас еще не установлен, то есть 😅).
Как только это будет сделано, мы можем продолжить и создать каталог нашего проекта. Назовем его js-project. Вы можете сделать это, набрав в терминале следующее (конечно, без подсказки $ 😆.):
$ mkdir js-project
Здорово! Затем давайте изменим каталог на эту папку, а затем инициализируем npm. В терминале/командной строке выполните следующую команду:
$ cd js-project && npm init
Вы сразу же увидите серию подсказок в своем терминале, после чего можете нажать клавишу enter на клавиатуре компьютера для каждой из них. После этого в корне каталога нашего js-project будет создан файл package.json. Файл package.json служит манифестом для нашего проекта. Это позволит разработчикам легко настроить этот проект и его зависимости в будущем.
Затем мы инициализируем git, а затем создадим файл .gitignore в каталоге нашего проекта. Вы можете добиться этого с помощью следующего:
$ git init && touch .gitignore
В файле .gitignore введите node_modules
и сохраните. Это гарантирует, что git не отслеживает файлы, созданные из наших зависимостей, что может привести к раздуванию каталога нашего проекта. Вы также можете добавить в этот файл любые другие файлы (например, .DS_Store), которые не хотите отслеживать.
ЛИНТЕРЫ
Сделав это, давайте добавим в наш проект несколько файлов линтера. Мы будем заимствовать файлы линтера CSS и JavaScript из репозитория GitHub Microverse. Для JavaScript давайте сначала установим необходимые зависимости, выполнив команду ниже.
$ npm install --save-dev [email protected] [email protected] [email protected]
Теперь мы добавим файл .eslintrc.json в каталог нашего проекта. Это сохранит нашу конфигурацию для eslint. Вам следует скопировать файл отсюда.
Давайте сделаем то же самое и для CSS, не так ли? Запустите приведенную ниже команду, а затем скопируйте файл конфигурации (.stylelintrc.json) в каталог вашего проекта отсюда.
$ npm install --save-dev [email protected] [email protected] [email protected] stylelint-csstree-validator
Когда это будет сделано, ваш файл package.json теперь должен выглядеть немного иначе с дополнительной информацией, подобной этой:
"devDependencies": { "eslint": "6.8.0", "eslint-config-airbnb-base": "14.1.0", "eslint-plugin-import": "2.20.2", "stylelint": "13.3.3", "stylelint-config-standard": "20.0.0", "stylelint-csstree-validator": "1.8.0", "stylelint-scss": "3.17.2" }
Теперь мы можем проверить наши файлы JS и CSS с помощью npx eslint .
и npx stylelint "**/*.{css,scss}"
соответственно. Это может быть трудно запомнить в большинстве случаев, поэтому давайте добавим скрипт npm, чтобы запустить это для нас. В файле package.json добавьте следующее в раздел scripts.
"lint": "npx eslint . && npx stylelint "**/*.{css,scss}"
. Когда это будет сделано, мы можем запустить npm run lint
, и все файлы JS и CSS будут проверены на наличие ошибок (убедитесь, что файлы JS и CSS присутствуют при запуске). Это легче запомнить, чем две команды, не так ли?
На этом этапе наша структура каталогов js-project должна выглядеть так, как показано ниже:
+-- node_modules/ +-- .eslintrc.json +-- .gitignore +-- .stylelintrc.json +-- package.json +-- package-lock.json
ВЕБ-ПАК
👏 Пока все хорошо. Теперь нам нужно решить небольшой вопрос интеграции Webpack для объединения наших файлов JavaScript в наш проект. Мы начнем с установки webpack, а затем создадим файл конфигурации для webpack. Чтобы установить веб-пакет, давайте запустим следующее:
$ npm install webpack webpack-cli webpack-dev-server --save-dev
Эти три зависимости помогут нам легко использовать веб-пакет, и они должны отображаться в package.json в разделе devDependencies. webpack-cli поможет нам запустить webpack в командной строке. webpack-dev-server также позволит нам запустить локальный сервер, который обновляет нашу веб-страницу каждый раз, когда мы вносим изменения в наши файлы. Подумайте о том времени, которое мы только что сэкономили, поскольку нам не нужно вручную обновлять веб-страницу каждый раз, когда мы вносим изменения в наш код. Круто, да? Теперь мы продолжим создавать наш файл конфигурации веб-пакета с touch webpack.config.js
.
Нам нужно немного изменить структуру каталога нашего проекта, чтобы продолжить. Давайте создадим папку src/ в корневом каталоге, а затем создадим в ней файл index.js. Затем мы настроим webpack для использования файла index.js в качестве точки входа. Мы также скажем веб-пакету создать папку dist/ в корневом каталоге, в которую он может отправить файл выходного пакета (который мы назовем output.bundle.js). Чтобы сделать все это, давайте сделаем так, чтобы наш файл webpack.config.js выглядел следующим образом.
const path = require('path');
module.exports = {
mode: 'development',entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'output.bundle.js' } };
Отлично! Запустите npx webpack
в терминале, и файл output.bundle.js будет создан в папке dist/. Теперь наша структура каталогов должна выглядеть так:
+-- dist/ | +--index.html | +--output.bundle.js +-- node_modules/ +-- node_modules/ +-- src/ | +-- index.js +-- .eslintrc.json +-- .gitignore +-- .stylelintrc.json +-- package.json +-- package-lock.json +-- webpack.config.js
Чтобы проверить, все ли работает как надо, откройте index.js и введите alert('Hello World!')
. Откройте index.html в браузере и увидите оповещение с текстом "Hello world!" неожиданно возникнуть. Чудесно! 👏
Давайте немного облегчим себе задачу. Установите html-webpack-plugin, чтобы мы могли позволить webpack-dev-server открывать для нас наш файл index.html всякий раз, когда мы его запускаем. Он также будет обновлять страницу всякий раз, когда мы вносим какие-либо изменения в файл.
npm install html-webpack-plugin --save-dev
После его установки обновите конфигурацию вашего веб-пакета следующим образом:
const HtmlWebPackPlugin = require( 'html-webpack-plugin' );const path = require('path');
module.exports = {
mode: 'development',entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'output.bundle.js' },
plugins: [ new HtmlWebPackPlugin() ]};
Поздравляем! 🎊 💫 🏆.
Вы сделали это так далеко! В завершение добавим еще несколько npm-скриптов в наш файл package.json. Продолжайте и отредактируйте наш раздел сценариев следующим образом:
"scripts": {
"lint": "npx eslint . && npx stylelint '**/*.{css,scss}'",
"start": "webpack-dev-server --mode=development --open",
"production": "webpack --mode=production"
},
С этим добавлением мы можем запускать npm start
в терминале при разработке нашего проекта. Наша веб-страница будет автоматически обновляться при любых изменениях, которые мы вносим в наши файлы. Как только наш проект будет готов к работе, мы можем запустить npm run production
, и webpack создаст наши файлы в папке dist/. Теперь эта папка готова к использованию в производственной среде.
Это все, что есть! 👯♂ 👯 💃 🕺Мы подошли к концу нашего маленького путешествия. Вы можете скачать уже готовый шаблон со всем, что уже настроено в этом репозитории. Все, что вам нужно сделать, это клонировать репозиторий и написать код в файле index.js. После этого запустите npm start
и вуаля! Ваш код работает в браузере! Когда вы закончите, запустите npm run production
, и веб-пакет создаст ваши файлы и выведет их в папку dist/, готовую к работе. Прохладный! 😎
Не стесняйтесь оставлять свои мысли, комментарии и предложения в комментариях. Вы также можете поделиться и проголосовать. Будем очень признательны 😉. Пока мы не встретимся снова! 👋