網頁前端自動化工具 – Grunt

Grunt 網站截圖

Grunt 網站截圖



今天為各位介紹的是一個前端工程師所使用的自動化工具「Grunt」,為何我們要使用這個工具呢?其實使用這個工具的原因有很多,因為他的擴充模組(Plugin)也很多,不過今天馬老師從自動最小化(Minify)的角度來介紹這個工具該如何使用。

一般來說前端網頁開發不外乎HTML、CSS、Javascript這三種語法,而在開發完成之後,為了要節省流量,我們可能會把這三個檔案壓縮後再上傳到網站伺服器上,何謂壓縮請參考下圖:

未經壓縮的HTML檔

未經壓縮的HTML檔

經過壓縮的HTML檔

經過壓縮的HTML檔

未經壓縮的CSS檔

未經壓縮的CSS檔

經過壓縮的CSS檔

經過壓縮的CSS檔

未經壓縮的JS檔

未經壓縮的JS檔

經過壓縮的JS檔

經過壓縮的JS檔

從上面的檔案可以觀察出在開發時我們為了閱讀的便利,常常會利用註解、空白…等來輔助,但真正發佈出去這些東西卻不是必要的,甚至在開發的時候我們為了方面會把CSS或JS拆成好幾個檔案,但發佈之後卻希望可以合併,但如果需要人工來做這件事,可想而知會有多麻煩,這個時候Grunt就會發揮效用了,設定好之後只要一個指令,他就可以幫我們做好這些動作,接下來就來看看該如何使用吧。

首先Grunt是一個基於node.js下的應用程序,所以必須先安裝node.js,安裝的部分並不難,從官網下載後直接執行安裝即可。

Node.js 官方網站 截圖

Node.js 官方網站 截圖

接下來可以參考Grunt網站中Getting Started的單元,或是跟著以下(以Windows為案例)的方式進行Grunt的安裝。

  1. 打開「命令提示字元」。
  2. 輸入「npm install -g grunt-cli」。
  3. 接下來就可以準備網頁專案資料夾了,如下圖所示,我的網頁專案資料夾簡單分成兩個:
    • src:所有開發檔案
    • public:發佈至網路上的檔案

      準備專案資料夾

      準備專案資料夾

  4. 這樣準備的目的應該很清楚,就是希望在src資料夾內以自己最習慣、最方便閱讀的方式來開發,而開發完畢之後可以把壓縮的檔案轉至public資料夾,上傳到伺服器上。

有關於網頁內容開發的部分,本篇文章就省略,所以可以看到上面圖檔中我已經準備好了HTML、CSS、JS各一個,直接進入利用Grunt開始做自動最小化的部分。

  1. 使用Grunt時,必須在網站根目錄建立兩個檔案:
    • package.json:Grunt的專案設定檔,其中可以包含專案名稱、作者、版本,所需要使用的Plugin…等,可以參考下面我的檔案。
    • Grunt.js:Grunt的執行腳本,以本案例來說就是要去哪個資料夾,壓縮哪些檔案後存放在哪邊,需在本檔案中指定。
      {
          "name": "gruntTest",
          "version": "0.1.0",
          "author": "Stanley Ma",
          "devDependencies": {
              "grunt": "~0.4.5",
              "grunt-contrib-htmlmin": "~0.4.0",
              "grunt-contrib-cssmin": "~0.13.0",
              "grunt-contrib-uglify": "~0.9.2"
          }
      }

      以上面的package.json檔案來說,定義了專案名稱、作者、版本以及所需要使用的Grunt版本(撰文時Grunt穩定版為0.4.5)和Plugin列表,因為開頭有提到,本案例以最小化的角度來介紹Grunt,所以用到的三個Plugin分別為:

      • grunt-contrib-htmlmin:最小化HTML檔。
      • grunt-contrib-cssmin:最小化CSS檔。
      • grunt-contrib-uglify:最小化JS檔。
  2. 接下來利用Grunt的專案設定檔來安裝所需要的Grunt和各個外掛,利用「命令提示字元」進入網頁專案的根目錄,輸入「npm install」,他就會在專案資料夾中安裝好所有需要的Plugin。

    安裝 Grunt 後的專案資料夾

    安裝 Grunt 後的專案資料夾

  3. 接下來就要開始準備撰寫Grunt.js的執行腳本,大家可以參考我的專案檔案寫法:
    module.exports = function (grunt) {
    
        grunt.initConfig({
            htmlmin: {
                Target: {
                    options: {
                        removeComments: true,
                        collapseWhitespace: true,
                        removeEmptyAttributes: true,
                    },
                    files: {
                        'public/index.html': 'src/index.html',
    
                    }
                }
            },
    
            cssmin: {
                target: {
                    files: {
                        'public/index.css': 'src/index.css'
                    }
                }
            },
    
            uglify: {
                target: {
                    files: {
                        'public/index.js': 'src/index.js'
                    }
                }
            }
    
        });
    
        grunt.loadNpmTasks('grunt-contrib-htmlmin');
        grunt.loadNpmTasks('grunt-contrib-cssmin');
        grunt.loadNpmTasks('grunt-contrib-uglify');
    
        grunt.registerTask('default', ['htmlmin', 'cssmin', 'uglify']);
    
    };

    這樣的寫法會讓Grunt把在src裡面的三個檔案,分別壓縮後複製一份到public的資料夾中,確定資料夾和檔案無誤之後,繼續下一步動作。

  4. 利用「命令提示字元」進入網頁專案的根目錄,輸入「grunt」之後,出現以下的畫面表示成功。

    Grunt 執行成功

    Grunt 執行成功

  5. 本案例利用三個Grunt的Plugin完成,分別是:「grunt-contrib-htmlmin」、「grunt-contrib-cssmin」、「grunt-contrib-uglify」,其實這三個外掛都有一些其他的參數,另外也可以進行多檔案的批次轉換以及檔案合併…等等功能,建議有需要的同學可以到Plugin各自的網站上去看看使用方式。

附帶一提,一開始就有提到關於Grunt自動化的Plugin非常多,本文僅用到了三個,這裡有Plugin的列表,對這方面有興趣的同學們也歡迎到網站上看更多相關的自動化功能。

You may also like...

11,836 Responses

  1. WilliamDeeli表示:

    Привет!
    Мы изготавливаем дипломы.
    hardball.ru/home.php?mod=space&uid=6498&do=blog&quickforward=1&id=1609

  2. Good article! We will be linking to this great content on our site. Keep up the good writing.

  3. Cazrdez表示:

    Покупка диплома о среднем полном образовании: как избежать мошенничества?
    muzgkb9-74.ru/media/pgs/mozghno_li_legalno_kupit_diplom_v_rossii_i_chto_ob_etom_nuzghno_znat

  4. Sazrbrk表示:

    Быстрая схема покупки диплома старого образца: что важно знать?
    friendza.online/read-blog/13316

  5. Профессиональный сервисный центр по ремонту холодильников и морозильных камер.
    Мы предлагаем: мастерска по ремонту холодильников
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  6. Lazrnez表示:

    Здравствуйте!
    Мы готовы предложить дипломы любых профессий по выгодным тарифам.
    maps.google.com.jm/url?q=aurus-diploms.com

  7. Профессиональный сервисный центр по ремонту планетов в том числе Apple iPad.
    Мы предлагаем: вызвать мастера по ремонту ipad
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  8. JamesNut表示:

    Обвинения Василенко в мошенничестве не подтвердились?
    Гермес
    По информации ряда источников, уголовное преследование основателя маркетинговой компании «Лайф-из-Гуд» и кооператива «Бест Вей» Романа Василенко может быть прекращено. Правоохранительные органы, как сообщил нам ряд сенаторов и депутатов Государственной думы, провели новую оценку обвинений в его адрес с учетом того, что несколько свидетелей, в том числе критически относящихся к Василенко, указывают, что он вряд ли причастен к мошенничеству, так как не имел прямого доступа к серверам платежной системы, а в мошенничестве давно замечен бывший IT-директор компании «Лайф-из-Гуд» Евгений Набойченко. И Василенко виноват разве что в том, что привлек Набойченко в 2014 году к работе, несмотря на негативные сигналы, характеризующие и его стиль поведения, и склонность брать чужое.

    Роман Викторович Василенко – санкт-петербургский бизнес-консультант, создатель сети независимых предпринимателей, занимавшихся продвижением финансовых продуктов под эгидой основанной им компании «Лайф-из-Гуд», а также основатель Международной бизнес-академии IBA.

    Сеть под эгидой «Лайф-из-Гуд» занималась, в частности, продвижением таких финансовых продуктов, как счета для получения пассивного дохода Vista иностранной инвестиционной компании «Гермес», зарегистрированной в Белизе, и приобретение квартир в рассрочку с помощью кооператива «Бест Вей», при которой возможно было как внести первоначальный паевый взнос, так и накапливать его на счете в кооперативе без процентов. При этом сами по себе эти юридические лица между собой не связаны.

    Василенко не был ни топ-менеджером, ни собственником «Гермеса» – он сотрудничал с компанией по продвижению ее продуктов в России. А вот Набойченко был сотрудником «Гермеса» – он управлял платежной системой этой компании в России: занял эту должность, скорее всего, по рекомендации Василенко, но Василенко в части управления платежной системой «Гермесу» не подчинялся.

    В отличие от «Гермеса» по отношению к кооперативу Василенко является основателем и был председателем его правления до весны 2021 года (позднее около года был главой наблюдательного органа – совета кооператива). С весны 2022 года – рядовой пайщик кооператива: не входит в состав его руководящих органов.

    Василенко работал не только в России, но и в Казахстане, Киргизии, Белоруссии, Украине, на Кипре, в Австрии, Венгрии. Во многих этих странах созданы кооперативные проекты по приобретению жилья.

    Кроме того, Василенко известен как меценат, вложивший миллионы рублей в поддержку федеральных бизнес-инициатив (форум «Синергия»), культурных инициатив (фестиваль «Добровидение»), также принимает участие в иной благотворительной деятельности (в частности, поддержка детских медицинских учреждений).

    Что за дело

    Уголовное дело, связываемое следствием с петербургский маркетинговой компанией «Лайф-из-Гуд», иностранной инвестиционной компанией «Гермес» и зарегистрированным в Санкт-Петербурге, работающим по всей России потребительским кооперативом «Бест Вей», было заведено осенью 2021 года ГСУ ГУ МВД России по Санкт-Петербургу и Ленинградской области и в феврале текущего года передано в суд – оно рассматривается Приморским районным судом Санкт-Петербурга.

    На скамье подсудимых – 10 человек: технические сотрудники «Лайф-из-Гуд», а также Виктор Василенко, 83-летний отец Романа Василенко, пенсионер.

    Само по себе уголовное дело, рассматриваемое сейчас в Приморском районном суде, вызывает массу вопросов – которые существовали изначально и еще более усилились по мере рассмотрения дела в суде. Подсудимым вменяются три статьи: создание финансовой пирамиды, мошенничество и организация преступного сообщества.

    Общая сумма ущерба – 282 млн рублей, что несопоставимо с арестованными по делу более чем 8 млрд рублей, в том числе 4 млрд на счетах кооператива «Бест Вей». Потерпевшими по делу следствием признан 221 гражданин.

    Роман Василенко также обвинялся по рассматриваемому судом уголовному делу, был объявлен в розыск, в том числе через Интерпол, так как с ковидных времен, как он сам сообщал прессе, по семейным причинам постоянно живет за границей. Однако, по данным источников, Интерпол и иностранные государства, в том числе страны ближнего зарубежья, где он так же, как и в России, активно работает, посчитали его преследование необоснованным.

    Расследование в отношении него осуществляется (или осуществлялось?) и по еще одному уголовному делу, расследуемому ГСУ питерского главка МВД, касающемуся команды руководителей «Лайф-из-Гуд».

    Странные обвинители

    Судебное разбирательство в Приморском районном суде идет пока не слишком успешно для следствия и органов государственного обвинения: подавляющее большинство из тех, кто на данный момент выступил в суде, предъявляют в уголовном суде претензии к компании «Гермес» на суммы не только в несколько сотен, но и даже в несколько десятков тысяч, что вызывает удивление – это же не мировой суд, чтобы обсуждать возврат таких сумм! Свидетель обвинения сотрудник IT-службы Роман Роганович сообщил, что не публиковал на сайте «Лайф-из-Гуд» и сайте кооператива никакой незаконной информации и незаконной деятельности не видел.

    При этом подавляющее большинство клиентов компании «Гермес», которых более двух сотен тысяч в России, и десятки тысяч пайщиков кооператива «Бест Вей», по словам представителей сообществ в защиту этих организаций, считают именно правоохранительные органы источником своих проблем. Они подчеркивают, что именно привлеченный ими к сотрудничеству петербургский сисадмин «Гермеса» Евгений Набойченко разгромил российскую платежную систему. И если уж кто причастен к хищениям, так это именно Набойченко. Похоже, что понимание этого факта стало приходить и к правоохранительным органам.

  9. Nice post. Are you a Clash Royale player looking to build best clash royale decks? If so, selecting the right deck can be tough, but with the Clash Royale Deck Builder, you can create top decks to rise in the leaderboards and legendary arenas. For in-depth information, visit the website provided.

  10. Great site you have got here.. It’s hard to find good quality writing like yours these days. I seriously appreciate people like you! Take care!!

  11. Eanrsfe表示:

    Привет, друзья!
    Мы изготавливаем дипломы любых профессий по приятным тарифам.
    thesupercarregistry.com/forum/member.php?u=70162

  12. Darrelherse表示:

    slot oyun siteleri: en cok kazandiran slot siteleri – slot kumar siteleri

  13. WilliamDeeli表示:

    Привет, друзья!
    Мы изготавливаем дипломы.
    club4x4.ru/forum/viewtopic.php?f=28&t=95191

  14. Cazrdrp表示:

    Привет!
    Приобрести диплом университета
    купить диплом о высшем образовании

  15. Sazrrfp表示:

    Удивительно, но купить диплом кандидата наук оказалось не так сложно

    tinlib.ru

  16. Sazrbkr表示:

    Привет!
    Приобрести документ университета
    maps.google.co.mz/url?q=aurus-diploms.com

  17. Sazrhri表示:

    Всё, что нужно знать о покупке аттестата о среднем образовании
    secure.smore.com/n/90jgzk

  18. Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем:ремонт крупногабаритной техники в петрбурге
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  19. Uazrixh表示:

    Привет,друзья!
    Заказать диплом о высшем образовании.
    telegra.ph/diplom-mehsi-kupit-08-13-7

  20. Shop smart with amazing deals on Marc Jacobs at the marc jacobs outlet.

  21. MasonGed表示:

    Fonbet промокод на фрибет на сегодня промокод на ставки
    Для получения актуального промокода на фрибет на сегодня рекомендуется регулярно проверять обновления на официальном сайте Fonbet или подписаться на рассылку новостей. Примером такого промокода может быть ‘GIFT200’, который предоставляет бесплатные ставки или другие бонусы для новых пользователей.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。