Код Visual Studio: автокомпиляция Less в CSS при сохранении с помощью Gulp | Дэвид Меллул
Код Visual Studio: автокомпиляция Less в CSS при сохранении с помощью Gulp | Дэвид Меллул | ITNEXTOpen in appPhoto by Nathan Dumlao on Unsplash Опубликовано в·
Чтение: 4 мин.·
22 августа 2018 г. для компиляции Less в CSS.Нет подключаемого модуля редактора. Никакого подвоха. Нет жесткого кода для понимания.
Я предоставлю вам чистый фрагмент Javascript и простые шаги, чтобы выполнить настройку за считанные секунды.
Вам нужно:
- A каталог проекта :
проект mkdir
- Gulp:
npm install -g gulp
или yarn global add gulp
cd project
npm install gulp
или пряжа add gulp
- Gulp-Less: Только в вашем проекте
cd project
npm install gulp-less
или пряжа добавить без глотка
Готово. Вперед.
Gulp — это средство запуска задач Javascript, позволяющее автоматизировать избыточные задачи.
Он имеет множество встроенных функций, которые действительно полезны.
Среди них мы будем использовать средство наблюдения за файлами, которое позволяет нам выполнять задачу при изменении файла.
Gulp-Less — это плагин Gulp, созданный специально для компиляции файлов Less в CSS. Он предоставляет нам компилятор Less.
Которые вы можете легко настроить в соответствии со своими потребностями.
Сначала создайте файл в корне каталога вашего проекта и назовите его gulpfile.js
.
Именно так Gulp ожидает от вас организации ваших задач, так что не называйте его иначе.
Затем скопируйте и вставьте этот фрагмент в gulpfile.js
:
Наконец, откройте терминал (используя cmd
или Ctrl + Shift + ù
в VSCode) и выполните эту команду:
gulp default
Готово .
Каждый раз, когда вы изменяете файл Less, расположенный в вашем srcDir
, он компилирует его и генерирует соответствующий файл CSS, расположенный в вашем dstDir
.
Под «изменить файл» я имею в виду использование Ctrl + S
или Файл > Сохранить
Во-первых, мы просто импортируем два модуля: gulp | без глотка
.
Затем, , мы определяем, где расположены наши файлы Less и где мы хотим создавать файлы CSS.
Строка 9
: Мы определяем задачу Gulp с именем «less» и определяем ее с помощью нашей пользовательской функции.
Строка 11
: Мы приказываем Gulp взять все .less
файлов в srcDir
в качестве источника. (используя *.less
)
Строка 12
: Мы приказываем Gulp взять все эти файлы в функцию less
(используя pipe
), которая исходит из модуля gulp-less
. Эта функция просто скомпилирует каждый файл в его аналог CSS.
Строка 13
: Мы приказываем Gulp взять все динамически созданные файлы CSS из их источников Less и сохранить их в srcDir 9.0027 .
Тем не менее, эта задача сама по себе ничего не делает. Это просто где-то определенная задача, которая сама по себе не будет реагировать на изменения файла.
Вот почему:
Строка 17
: Мы говорим Gulp выполнять задачу меньше
, когда файл, расположенный в srcDir
, изменяется.
Наконец, с запуском gulp default
запустит задачу по умолчанию
, которая сама запускает задачу less
при каждом изменении файла.
Сначала я не хотел начинать изучать еще одну технологию в океане, но, боже мой, (поверьте мне) это стоит потраченного времени.
Gulp позволяет автоматизировать множество вещей, таких как:
- Минификация/улучшение файлов.
- Автоматическое добавление префикса для совместимости с браузером.
- Обновление браузера при сохранении.
- Многие другие трудоемкие задачи, которые вам лучше поручить Gulp 😃
Кроме того, в VSCode есть Tasks
вкладка, из которой вы можете запускать задачи gulp. Вот почему gulpfile.js
Именование важно.
Более того, VSCode позволяет вам определять сочетания клавиш для запуска задач, так что ввод команды или нажатие на Tasks
больше не будет для вас проблемой.
См. эту ссылку для запуска задач с помощью сочетаний клавиш
Обратите внимание, что запуск
gulp default
будет продолжать работать и просматривать файлы, пока вы не закроете редактор / интерпретатор командной строки.
Делаю все возможное, чтобы предоставлять вам ценный контент каждую неделю в этом году.
Буду признателен за 50 аплодисментов 👼
Посмотрите мою последнюю статью:
Отслеживайте пользовательские события на своем веб-сайте с помощью Google Analytics
Google Analytics — очень надежное решение для отслеживания пользователей.
Но крошечный скрипт есть у всех…dmware.fr
Не стесняйтесь обращаться по телефону [email protected].
Более ценный контент на моем личном сайте: https://dmware.fr
«Капучино в белой кружке с изображением белой пены на деревянном столе» автор wu yi на UnsplashАвтоматизация
JavaScript
Кодирование
Тайм-менеджмент
Автор Дэвид Меллул
418 Подписчики
· Writer for 9 0004 Fullstack Developer, Trainer & EntrepreneurЕще от Дэвида Меллула и ITNEXT
Дэвид Mellul
в
Node + Express + LetsEncrypt: сгенерируйте бесплатный SSL-сертификат и запустите HTTPS-сервер за 5…
На момент написания моей последней статьи у меня было много трудностей, связанных с SSL-сертификатами, созданными с помощью LetsEncrypt (certbot…
Чтение за 4 мин. · 22 апреля 2018 г.
Патрик Калкман
в
Скрытые жемчужины Python
Шесть менее известных библиотек Python, которые стоит изучить
·12 минут чтения·26 апреляПатрик Калкман
в
Внедрение зависимостей в Python
Создание гибких и тестируемых архитектур в Python
·13 мин чтения·14 апреляДэвид Меллул 9000 3
в
Javascript: преобразование HTML + CSS в PDF.
Печать HTML за секундыХватит оглядываться по сторонам, действуйте.
Чтение: 3 мин. · 2 августа 2018 г.
Просмотреть все от Дэвида Меллула
Рекомендовано Medium
Михал Малевич
Существует ПЯТЬ уровней навыков пользовательского интерфейса.
Только уровень 4+ позволяет нанять вас.
·6 минут чтения·25 апреляThe PyCoach
в
Искусственный уголок
Вы используете ChatGPT неправильно! Вот как опередить 99% пользователей ChatGPT
Освойте ChatGPT, изучив технику быстрого доступа.
·7 минут чтения·17 мартаСписки
Истории, которые помогут вам расти как разработчику программного обеспечения
19 историй·50 сохранений
Как проводить более содержательные встречи 1:1
9000 4 11 историй·25 сохраненийПовышение уровня лидерства
7 историй·5 сохранений
Производительность 101
20 историй·87 сохранений
Мириам Миссбихлер
Почему японские веб-сайты выглядят так по-разному
и как анализировать варианты дизайна, не делая поспешных выводов
8 минут чтения· 1 мая
Цифровая Республика ✨
9 проектов, которые помогут вам стать экспертом по фронтенду в 2023 году
·10 минут чтения·3 февраляЛав Шарма
в
Dev Genius
Схема проектирования системы: полное руководство
Разработка надежной, масштабируемой и эффективной системы может быть непростой задачей.
Тем не менее, понимание ключевых концепций и компонентов может сделать… ·9 мин. чтения·Apr 20Kemil Beltre
in
Geek Culture
10 лучших расширений Chrome для Frontend Engineers
9 0003Внешний интерфейс инструменты
·Чтение через 4 мин·Фев 19Посмотреть дополнительные рекомендации
Статус
Писатели
Карьера
Конфиденциальность
Преобразование текста в речь
Настройка рабочего процесса с помощью Gulp для разработки шрифтов
Challenge
Когда вы получаете зеленый свет для нового веб-приложения project, как бы вы настроили рабочий процесс для разработки интерфейса? Допустим, LESS и ES6 — это основные технологии, которые вы хотите внедрить, но написание ES6 для браузеров невозможно, если вы не используете Babel или что-то эквивалентное для перевода ES6 в ES5, которое они в настоящее время также понимают, написание CSS для предварительной обработки утомительно, потому что это необходимо перевести в «фактический» CSS, прежде чем мы сможем использовать его в наших браузерах. Вам нужен быстрый и плавный рабочий процесс разработки, который мы использовали до этих новых технологий, без прерывания процесса перевода и преобразования.
После многих проектов, над которыми я работал в прошлом, я, наконец, сузил их до использования Gulp, Babel и Browserify, которые помогли мне настроить рабочий процесс разработки, который мне нужен.
Начало работы
1. Структура каталогов
Это моя базовая структура каталогов:
------------- расстояние / шрифты/ шрифты/ изображений/ javascripts/ таблицы стилей/ index.html пакет.json gulpfile.js favicon.ico -------------
dist/
— это место, где хранятся все переведенные файлы ES6 и LESS, и именно здесь вы должны связать их в ссылка
и скрипт
теги:
fonts/
— это место, где находятся все пользовательские веб-шрифты, которые я создал с помощью IcoMoon и Font Squerrel. 3.92.0.0"
},
"браузер": {
"jquery": "./node_modules/jquery/dist/jquery.js"
},
"browserify-shim": {
"jquery": "$"
},
"просмотреть": {
"преобразовать": [
"браузер-оболочка"
]
}
}
Недавно я перешел с Bootsrap на Zurb Foundation, потому что обнаружил, что у последнего лучше система сетки.
3. gulpfile.js
И, наконец, это то, что у меня есть в моем файле gulpfile.js:
var gulp = require('gulp') var sourcemaps = require('gulp-sourcemaps') var livereload = требуется ('gulp-livereload') var watch = require('gulp-watch') пакетная переменная = требуется ('пакетный глоток') // Разработка JavaScript. var browserify = требовать('browserify') вар бабелифай = требуют('бабелифай') var source = require('винил-источник-поток') var буфер = требуется ('винил-буфер') var uglify = требуется ('gulp-uglify') // Меньше компиляции. var меньше = требуется ('без глотка') // Компиляция CSS. var concat = требуется ('gulp-concat') var cleanCSS = требуется ('gulp-clean-css') var concatCss = require('gulp-concat-css') // необязательный // Компиляция HTML. var htmlmin = требуется ('gulp-htmlmin') var путь = требуется('путь') var foreach = требуется ('gulp-foreach') // Задача на компиляцию js. gulp.task('compile-js', функция () { // app.js — ваш основной JS-файл со всеми включенными модулями вернуться в браузер ({ расширения: ['.js'], записи: ['./javascripts/app.js'], отладка: правда }) .transform('babelify', { // https://babeljs.io/docs/en/env/ пресеты: ['@babel/preset-env'] }) .пучок() .pipe(источник('bundle.min.js')) .pipe(буфер()) .pipe(исходные карты.init()) .pipe(украсить()) .pipe(sourcemaps.write('./maps')) .pipe(gulp.dest('dist')) .pipe(livereload()) }) // Задача компилировать меньше. gulp.task('без компиляции', function () { вернуть gulp.src([ 'таблицы стилей/master.less' ]) .pipe(исходные карты.init()) .труба(меньше()) .pipe(sourcemaps.write('./maps')) .pipe(gulp.dest('таблицы стилей/css')) }) // Задача на минимизацию css. gulp.task('minify-css', функция () { вернуть gulp.src([ 'таблицы стилей/CSS/master.css' ]) .pipe(исходные карты.init()) .pipe(cleanCSS({отладка: правда})) .pipe(concat('bundle.min.css')) .pipe(sourcemaps.write('./maps')) .pipe(gulp.dest('dist')) .pipe(livereload()) }) // Зацикливаем каждый html. // https://www.npmjs.com/package/gulp-foreach gulp.task('уменьшить-html', функция () { вернуть gulp.src('*.html') .pipe (foreach (функция (поток, файл) { // Получить имя файла. // https://github.com/mariusGundersen/gulp-flatMap/issues/4 // https://nodejs.org/api/path.html#path_path_basename_p_ext имя переменной = путь.базовое имя(файл.путь) обратный поток .pipe(htmlмин({ коллапсПробел: правда, удалитьКомментарии: правда })) .pipe(concat('мин.' + имя)) })) .pipe(gulp.dest('')) }) // Задача скопировать шрифты в dist. gulp.task('копировать-шрифты', function() { вернуть gulp.src([ 'шрифты/*.{eot,svg,ttf,woff,woff2}', 'шрифты/**/*.{eot,svg,ttf,woff,woff2}', 'node_modules/material-design-icons/iconfont/MaterialIcons-Regular. *', 'node_modules/foundation-icon-fonts/foundation-icons.*', ]) .pipe(gulp.dest('dist/шрифты/')) }) // Задача скопировать изображения в dist. gulp.task('копировать-изображения', функция() { вернуть gulp.src([ 'изображения/*.{jpg,png,gif,svg}', 'изображения/**/*.{jpg,png,gif,svg}', 'node_modules/jquery-ui-bundle/images/*', ]) .pipe(gulp.dest('dist/images/')) }) // Задача для просмотра. gulp.task('часы', функция () { // Рекурсивно просматриваем все файлы js. смотреть([ 'javascripts/**', 'javascripts/**/*.js' ], пакет(функция (события, выполнено) { gulp.start('compile-js', готово) })) // Рекурсивно просматриваем все файлы less. смотреть([ 'таблицы стилей/**', 'таблицы стилей/**/*.less' ], пакет(функция (события, выполнено) { gulp.start('без компиляции', готово) })) // Рекурсивно просматриваем все файлы css. смотреть([ 'таблицы стилей/**', 'таблицы стилей/**/*.css' ], пакет(функция (события, выполнено) { gulp. start('уменьшить-css', готово) })) // Просмотр всех файлов изображений рекурсивно. смотреть([ 'изображений/**', 'изображения/**/*.{jpg,png,gif}' ], пакет(функция (события, выполнено) { gulp.start («копировать изображения», готово) })) // Рекурсивно просматриваем все файлы шрифтов. смотреть([ 'шрифты/**', 'шрифты/**/*.{eot,svg,ttf,woff,woff2}' ], пакет(функция (события, выполнено) { gulp.start('копировать-шрифты', готово) })) }) // Разработка: // Задача при запуске `gulp` из терминала. gulp.task('по умолчанию', ['смотреть']) // Производство: // Задача при запуске gulp build из терминала. gulp.task('сборка', [ 'уменьшить-CSS', 'копировать-шрифты', 'копировать изображения', 'компиляция-js', 'уменьшить-html' ])
Gulp будет отслеживать любые изменения в коде LESS и ES6 и автоматически переводить их для вас. Поэтому вам просто нужно обновить браузер, чтобы увидеть изменения.
Использование рабочего процесса
Чтобы использовать этот рабочий процесс, перейдите в корневой каталог проекта и запустите его на своем терминале, затем установите пакеты Node:
$ npm install
Во время разработки LESS и ES6:
$ gulp watch
Когда вы будете готовы к распространению:
$ gulp build
Вы можете использовать уменьшенный HTML index.