Рубрики
Без рубрики

Настройка задач Gulp впервые

Пытаясь настроить задачи глотали в первый раз? Через этот учебник вы узнаете, как компилировать и запустить задачи, используя Gulp.js.

Автор оригинала: Jose Zamudio.

Как настроить задачи Gulp

Прежде всего, что такое Gulp.js ? Простой ответ:

GULP.JS – это задача/сборщик, который использует трубы для потоковых данных, которые необходимо обрабатывать.

Итак, как Gulp.js может помочь во время процесса развития?

Есть много языков программирования, которые имеют Расширения Это облегчает или более элегантно развивать большие проекты. Это Расширения Может быть более мощным во время разработки, добавив функции, которые не были доступны на исходном языке.

Некоторые примеры:

  • CoffeeScript => JavaScript

CoffeeScript:

thisIsAFunction = (a, b, c) ->
   # Do something

JavaScript:

function thisIsAFunction(a, b, c) {
   // Do something
}
  • Джейд => HTML

Джейд:

form
   input#id-name.class-name(type='text', placeholder='Something')

HTML:

  • Sass/rESE => CSS

Sass:

.some-class {
   background-color: $variable-name;

   .some-inner-class {
      color: $variable-name;
   }
}

CSS:

.some-class {
   background-color: #444;
}

.some-class > .some-inner-class {
   color: #444;
}

Это Расширения Сами по себе ничего не делайте … браузер не понимает, что CoffeeScript, Jade или Sass, они должны быть скомпилированы на свои оригинальные языки для браузера, чтобы узнать, что вы пытаетесь программировать.

Вот где приходит Gulp.js. Есть много плагинов, которые позволяют вам компилировать все это Расширения на их первоначальный язык и заставить его работать с простой строкой в терминале.

Настройка GULP.JS В первый раз может быть запутано, так что в этом руководстве я собираюсь вести вас в управление своими первыми задачами для компиляции CoffeeScript , Джейд и Sass в JavaScript , HTML и CSS Отказ

Требования

  1. Node.js ( Как установить )
  2. Новейшая версия Узел Узел Manager (NPM)
  3. Gulp.js установлен по всему миру
// run to make sure you have the newest version...
npm install -g npm 
npm install -g gulp

Для этого учебника мы собираемся создать простое приложение TODO с приложением Angular.js (без базы данных, он будет хранить только элементы для текущего сеанса и будет удалять их при обновлении …)

Это будет структура файла для проекта:

- app/
---- js/
-------- main.coffee // will compile to .js
---- css/
-------- main.scss // will compile to .css
---- index.jade // will compile to .html
- gulpfile.js
- package.json

После составления наших файлов Gulp создаст публично/ Папка, которая будет удерживать вновь скомпилированные файлы.

Давайте начнем!

Настройка Angular.js в вашем нефрите/HTML

Во-первых, давайте создадим базовый проект HTML в нефрите

Приложение/index.jade.

doctype html
html
   head
      title 'ToDo App'
   body
      input.input-form(type='text', placeholder='Add things to do')

Это создаст базовый HTML-файл с заголовком “Todo app” с входной формой в качестве содержания сайта.

Давайте добавим Angular.js к нему, используя CDN Angular.js и ссылку на нашу таблицу stylesheet и наши файлы JavaScript.

Приложение/index.jade.

doctype html
html(ng-app='TodoApp')
   head
      title 'ToDo App'
      link(rel='stylesheet', href='css/main.css')
   body(ng-controller='TodoAppController')
      input.input-form(type='text', placeholder='Add things to do')
      button.btn(type='submit') Submit

      script(src='https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js')
      script(src='js/main.js')

Приложение/JS/Main.Coffee

angular.module('TodoApp', [])
.controller 'TodoAppController, [ $scope, ($scope) ->
   # logic goes here
]

Приложение/CSS/Main.scss

$black: #444;
$gray: #eee;
$danger-red: #d54444;

body {
   background-color: $gray;
   color: $black
}

Это основа вашего приложения с Angular.js, готовых к тому, чтобы создать приложение, используя нефть, CoffeeScript и Sass.

Логика для приложения

Я собираюсь сделать это приложение действительно простым, поскольку идея для этого учебника не является не тем, как создать приложение, но как скомпилировать и запускать задачи, используя Gulp.js.

Приложение/index.jade.

doctype html
html(ng-app='TodoApp')
   head
      title 'ToDo App'
      link(rel='stylesheet', href='css/main.css')
   body(ng-controller='TodoAppController')
      input.input-form(type='text', placeholder='Add things to do')
      button.btn(type='submit') Submit
      ul
         li(ng-repeat='task in tasksToDo track by $index') {{task}}

      script(src='https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js')
      script(src='js/main.js')

Приложение/JS/Main.Coffee

angular.module('TodoApp', [])
.controller 'TodoAppController, [ $scope, ($scope) ->
   $scope.tasksToDo = []
  $scope.error = false
  $scope.addTask = (task) ->
     if not task
        $scope.error = true
     else
        $scope.tasksToDo.push(task)
        $scope.newTask = ''
        $scope.error = false
]

Приложение/CSS/Main.scss

$black: #444;
$gray: #eee;
$white: #fff;
$danger-red: #d54444;

body {
   background-color: $white;
   color: $black;
   text-align: center;
}

input[type='text'] {
   background-color: $gray;
   padding: 15px;
   font-size: 14px;
   border-radius: 4px 0 0 4px;
   box-shadow: none;
   border: none;
}

button {
   padding: 15px;
   margin-left: -4px;
   font-size: 14px;
   border-radius: 0 4px 4px 0;
   box-shadow: none;
   border: none;
   background-color: $black;
   color: $white;
}

.error-message {
   margin: 10px;
   color: $danger-red;
}

ul {
   list-style: none;
   padding: 0;

   li {
      margin: 5px;
      padding: 5px 20px;
      border: 1px solid $danger-red;
   }
}

Мы закончили с приложением!

Но подожди … браузер ничего не понимает из этого! Мы должны построить наш Gulpfile.js, чтобы скомпилировать это на языке, наш браузер может понять.

Настройка Gulpfile.js.

Сначала убедитесь, что вы запустите NPM установить -G глоток

Сначала мы должны настроить Package.json файл…

Package.json.

{
   "name": "gulp-tutorial",
   "version": "1.0.0",
   "description": "",
   "main": "gulpfile.js",
   "author": ""
}

Теперь на терминале запустите следующую команду:

npm install --save-dev gulp gulp-jade gulp-sass gulp-coffee gulp-load-plugins gulp-util

Это установит следующие пакеты в ваш Package.json в качестве зависимости DEV

  • Гульп : Главная задача бегун
  • Гульп-Джейд : Это будет скомпилировать свой нефритовый HTML.
  • Гульп-Сас : Это скомпилирует ваш SASS в CSS.
  • Гульп-кофе : Это составит ваш CoffeeScript в JavaScript.
  • Гульп-нагрузки-плагины : Это позволит нам использовать плагины, не требуя их всех.
  • Gulp-Util : Это позволит нам ошибкам Console.log в гораздо приятнее/довольно.

Ваш Package.json должен выглядеть так сейчас:

Package.json.

{
   "name": "gulp-tutorial",
   "version": "1.0.0",
   "description": "",
   "main": "gulpfile.js",
   "author": "",
   "devDependencies": {
     "gulp": "^3.9.0",
     "gulp-coffee": "^2.3.1",
     "gulp-jade": "^1.0.1",
     "gulp-load-plugins": "^1.0.0-rc.1",
     "gulp-sass": "^2.0.3",
     "gulp-util": "^3.0.6"
   }
}

Теперь давайте воспользуемся нашим Gulpfile.js.

Чтобы создать задачу, которую мы используем следующий синтаксис:

gulp.task('NAME_OF_TASK', function() {
   gulp.src(['PATH_TO_SOURCE_FILE'])
   .pipe(**INSERT_TASK**)
   .pipe(gulp.dest('PATH_TO_DESTINATION');
});

Gulpfile.js.

// We have to require our dependencies
var gulp = require('gulp');
var $ = require('gulp-load-plugins')();

// create a TASK to compile Jade to HTML using gulp-jade
gulp.task('html', function() {
   gulp.src(['./app/**/*.jade'])
   .pipe($.jade({pretty: true, doctype: 'html'}))
   .on('error', $.util.log)
   .pipe(gulp.dest('./public/'));
});

// create a TASK to compile CoffeeScript to JavaScript using gulp-coffee
gulp.task('js', function() {
   gulp.src(['./app/**/*.coffee'])
   .pipe($.coffee({bare: true}))
   .on('error', $.util.log)
   .pipe(gulp.dest('./public/'));
});

// create a TASK to compile Sass into CSS using gulp-sass
gulp.task('css', function() {
   gulp.src(['./app/**/*.scss'])
   .pipe($.sass({style: 'expanded'}))
   .pipe(gulp.dest('./public/'));
});

// create a TASK to WATCH for changes in your files
// this will "watch" for any changes in your files and rerun gulp if necessary
gulp.task('watch', function() {
   gulp.watch(['./app/**/*.jade'], ['html']);
   gulp.watch(['./app/**/*.coffee'], ['js']);
   gulp.watch(['./app/**/*.scss'], ['css']);
});

// finally, create a TASK that will run all commands when typing "gulp"
// in Terminal

gulp.task('default', ['html', 'js', 'css', 'watch'], function() {});

Ваш терминал должен иметь что-то похожее на следующие журналы:

[14:09:59] Using gulpfile ~/Developer/codementor/tutorials/Gulp/gulpfile.js
[14:09:59] Starting 'html'...
[14:09:59] Finished 'html' after 176 ms
[14:09:59] Starting 'js'...
[14:10:00] Finished 'js' after 109 ms
[14:10:00] Starting 'css'...
[14:10:00] Finished 'css' after 83 ms
[14:10:00] Starting 'watch'...
[14:10:00] Finished 'watch' after 11 ms
[14:10:00] Starting 'default'...
[14:10:00] Finished 'default' after 2.54 μs

Что происходит с каждой задачей, это то, что при запуске Гульп В терминале Гульп пойдет на Gulp.src указано в каждой задаче и составление определенного файла. Если есть ошибка, она будет зарегистрирована в терминале, позволяя вам знать проблему. Если нет ошибки, Gulp создаст папку под названием публично/ и поместите компиляцию .html , .js и .css в этом.

Смотреть Задача будет проверять, внося ли вы изменения в любой из ваших файлов, и если вы сделаете, это сделает их снова скомпилировать и обновить .html , .js или .css Отказ

Вы также можете захотеть запустить только индивидуальную задачу, вы можете сделать это, запустив следующую команду:

> gulp NAME_OF_TASK

я

> gulp html

Теперь, если вы посмотрите на свой файловый каталог, вы увидите вновь созданную папку, называемую публично/ Со всеми вашими скомпилированными файлами в нем теперь ваш браузер может прочитать эти файлы!

Введите описание изображения здесь

Дополнительные комментарии

Гульп очень мощный, и он может быть использован, чтобы сделать гораздо больше, например:

  • Объединить все ваши файлы в один файл
  • Введите все файлы JavaScript и CSS автоматически в свой HTML
  • Livereload ваш браузер при внесении любых изменений в ваши файлы.
  • Запустить браузерс
  • Создание файлов с такой командой, как Генерация глотания: Controller File_Name
  • Многое другое!

Я загрузил файлы в Github, и вы можете проверить это здесь

Спасибо за прочтение!