Ответы пользователя по тегу Gulp.js
  • Как вы боретесь с удалением папок node_modules в Windows?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Тема в интернетах давно и широко освещаема, народ давно прикурил, что не все так просто, как кажется на первый взгляд, и нет "серебряной пули".

    `RimRaf` - хорошо, но не очень: использовать можно либо из скрипта, либо вручную на каждый проект, т.е. перед массовым бэкапом можно использовать лишь в составе некое "подготовительного" инструмента. И таки да - есть проблемы на разных конкретных конфигурациях. "Platform independence" не получился. По сути тех же результатов можно получить делая `rm -rf node_modules` в оболочке `bash` или `rmdir /S node_modules` в `cmd`, причем `rmdir` в большинстве случаев не вспомнит про длину строки, даже если для этого есть поводы.

    `npm dedupe` - тоже очень хорошо, но также не очень. Это неплохо делать в каждом проекте после `install` или после каждого изменения зависимостей. В противном случае перекур на сутки - просто гарантирован.

    1.

    Если доступна оболочка Bash на основе CygWin (если пользуетесь Git, скорее всего она - оболочка баша - есть, но не факт) решение, которое лежит на поверхности:

    find . -name "node_modules" -exec rm -rf '{}' +

    плюсик в конце - так надо: автоматом подтаскивает завершение (перевод) строки, можно заменить на \;

    Попадался и такой вариант:

    #!/bin/bash
    
    delete-all-dep-folders() {
      # `-prune` prevents building up lists of `node_modules` inside `node_modules`
      find ${1:-.} -type d -name "node_modules" -prune -exec rm -rf '{}' \; -exec echo 'Deleted {}' \;
      find ${1:-.} -type d -name "bower_components" -prune -exec rm -rf '{}' \; -exec echo 'Deleted {}' \;
    }


    После запуска скрипта (можно просто скопипастить в окошко баша) можно без параметров запустить команду `delete-all-dep-folders` в нужной папке или первым параметром задать путь:

    $ delete-all-dep-folders /path/to/project-root

    Напомню: если `bash` под cygwin, только тогда ему плевать на длину пути. Насколько это так, вы должны знать сами - где и какую версию Гита/Баша вы брали, там и надо читать: в интернетах найдется куча версий баша, скомпилированных с использованием нативных библиотек Windows, которые не используют cygwin!!!

    2.

    PowerShell. Якобы та самая "серебрянная пуля" от МелкоСофт. Вроде бы, плевать он хотел на длину пути. Якобы.

    Если видели в документациях/интернатах другое - не спешите опровергать: с виндами никогда ничего не бывает однозначно, у нее (Винды), как у любой нормальной женщины, в словаре бинарной логики (либо "да", либо "нет") есть еще и значения "может быть", "не знаю" и "это не я".

    Вариант:

    Get-ChildItem -Path "." -Include "node_modules" -Recurse -File:$false  | Get-ChildItem -Recurse | Remove-Item -Recurse  -Force


    Вполне рабочий, НО версия PowerShell >4.0. Более старые версии даже с ключом `-Force` не могут удалить НЕпустые папки.

    Уточню: несмотря на то, что Remove-Item (он же del, он же ...) имеет возможность обозначать фильтры и работать рекурсивно, тем не менее необходимость конвейера (знак палки между командами) все-таки есть, и на эти грабли наступало уже очень много народу еще до того, как на ms-tech и в документации была признано и отмечено, что таки да, проблема есть и в качестве решения предлагается использовать конвейер, т.е. – через палку надо делать, и не делать тупо Delete.

    И таки да, я нарвался на случай, когда это не сработало - на USB диске (NTFS) лежал старый проект на `Meteor`. Актуальности никакой, для истории тоже не находка, но он единственный усиленно сопротивлялся 4 с лишним часа. После чего мне надоело доискиваться причин такой стойкости и старый (честно купленный еще в прошлом веке) добрый Total Commander справился со всем проектом полностью за 1.897s.

    3.

    Победитель конкурса - Total Commander с настройками дисковых операций с помощью собственных (НЕ системных) функций. Не верьте документации: Windows, начиная с Vista, выполняет при дисковых операциях значительно больше "левых" действий для красоты, чем Commander, посему операции "его" функциями выполняются быстрее, чем "её" функциями. Совсем хорошо, если отключить в командере поддержку файлов описаний содержимого каталогов. Также, когда-то давно, мне попадался на глаза подключаемый модуль для командера, который заменял/дополнял поиск файлов на другой, в котором используется другая библиотека для работы с регулярными выражениями и дисковые операции можно выполнять сразу над результатами поиска без перекладывания во временную панель.

    4.

    Или мы не программисты? Пишем свой велосипед по рекурсивному обходу каталогов и `rimraf`-им чего надо. При этом не забываем положить сей золотой ключик отдельно, чтобы мимоходом не прибить его зависимости, и делаем для него консольный вызов. Успешно выкладываем в NPM и собираем звезды на Гитхабе. Дерзайте, а я настоящий программист, мне - лень, когда все просто и понятно :)
    Ответ написан
    Комментировать
  • Как провести валидацию HTML (Gulp)?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    По дефолту gulp-htmllint берет правила проверки из `.htmllintrc`.
    Для его создания можно использовать `htmllint-cli
    Остальное подправить ручками и запускать таск без указания дополнительных опций.
    Ответ написан
    Комментировать
  • Gulp. Не удается добавить sourcemap к js. В чем ошибка?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Делай сначала uglify, потом concat.
    и будет тебе Щасте!
    И не забудь указать путь куда писать sourcemap: soucremap.write('./') или куда тебе там его надо положить
    Ответ написан
    1 комментарий
  • Как вы оптимизируете svg и создаете svg спрайты?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    https://github.com/tars/tars
    не только с SVG, вообще швейцарский нож для сложной верстки, но основная идея - именно грамотное использование SVG спрайтов
    Ответ написан
    Комментировать
  • Gulp или IDEA File Watcher?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Если в коде приходится лазить другим редактором (например у меня Саблайм все-таки основной, а Шторм больше для отладки PHP), то про Watcher'ы Шторма лучше совсем забыть. Тот же Саблайм, на мой взгляд, гораздо лучше справляется с подготовкой LESS, SCSS, SVGO и т.п. Нода в любом случае используется, как ни крути, и тут уж дело вкуса каким образом запускать сборку: Гульп, Саблайм (особенно актуально для небольших проектов) Шторм или другая IDE.
    Ответ написан
    Комментировать
  • Помогает ли gulp при верстке обычных сайтов?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Вот хороший ответ на вопрос: TARS
    В 2х словах - швейцарский нож верстальщика от разработчиков 2ГИС, вплоть до автоматической подготовки спрайтов. Все основано на Gulp.
    Ответ написан
    Комментировать