2016-11-25 3 views
0

Можно ли запускать задачи gulp с страницы пользовательского интерфейса?Запуск задач Gulp web

Пример: Наличие веб-формы или любой вход типа и при нажатии на любую кнопку, чтобы запустить уже определенную и конкретную задачу (запустить сборки, компиляции дерзость, вы называете это.)

Спасибо

+0

Задачи afaik gulp предназначены для управления проектом, а не для использования в самом приложении. Какую структуру/язык вы используете? –

+0

Я думал использовать ** reactjs **. Как вы думаете ? – mstroiu

ответ

1

Ответ: Я не знаю, но если это так, вы не должны это делать.

Почему ?: Gulp предназначен для выполнения задач по разработке стороны, запуска и управления оболочкой (терминал/командная строка), а не со стороны веб-браузера.

Вы можете использовать React with Gulp. Веб-поведение - это ручка на стороне React. Вы можете легко изучить React, есть много документации и учебников. Мне нравится this one

+0

Спасибо! Я знаю, что для этого не был создан глоток. Я просто хотел посмотреть, возможно ли это, и даже возможно, это не стоит того. ** reactjs ** выглядит более многообещающим для того, чего я хочу достичь, который создает/генерирует статический html из формы. :) – mstroiu

2

Да, вы могли бы. Вам просто нужно выполнить gulp taskname при необходимости. Вам понадобится запрос ajax для скрипта, выполняющего команду gulp. FI, вы можете сделать рабочий пример с этим скелетом, используя nodejs и выразить:

gulpfile

gulp.task('minify' , function(){ 
    console.log('gulp called!'); 
    gulp.src('scripts/src/test.js') 
    .pipe(minify()) 
    .pipe(gulp.dest('scripts/bin/')); 
}); 

server.js

var express = require('express') 
var app = express(); 
var exec = require('child_process').exec; 


app.use(express.static('public')) 

app.post('/send' , function(req , res){ 
    console.log('this was called'); 
    exec('gulp minify'); 
    res.send('success!'); 

}); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

общественности/index.html

<html> 

    <head> 

    </head> 

    <body> 
     <button onclick=send()>Execute gulp minify</button> 
    </body> 

    <script 
    src="https://code.jquery.com/jquery-3.1.1.min.js" 
    integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" 
    crossorigin="anonymous"></script> 
    <script> 

     function send(){ 
      $.ajax({ 
       url : 'http://localhost:3000/send', 
       method : 'POST', 
       success : function(res){ 
        console.log(res); 
       }, 
       error : function(response){ 
        console.log('Error!'); 
        console.log(response); 
       } 
      }); 
     } 
    </script> 
</html> 

package.json

{ 
    "name": "gulp-from-script", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "express": "^4.14.0", 
    "gulp-uglify": "^2.0.0" 
    } 
} 

скрипты/SRC/test.js

function test(){ 
    console.log('this file should be minified to bin/test.js on click'); 
    //end. 
} 

С этого шаблонного, вы можете просто установить зависимости npm install

затем служат: node server.js

А затем перейти к localhost:3000/index.html

После нажатия на кнопку, откроется уменьшенная файл должен появиться под /scripts/bin/test.js

Конечно вам нужно nodejs и НПМ, установленные в вашей системе, чтобы получить эту работу. Это просто рабочий пример, демонстрирующий, как это сделать, это можно сделать с помощью любой другой технологии на стороне сервера, единственное, что нужно назвать задачей gulpfile с пост-контроллера на вашей стороне сервера.

Итак, это было бы полезно для всего?. Как заявляет Сандрана Перейра, gulp - это задача, предназначенная для создания front-end активов вашего проекта. Вы не должны вызывать его из сценария, запускаемого пользователем веб-приложения.

Однако вы можете настроить такую ​​систему для создания локального веб-сайта или приложения под локальным хостом/для управления своими сборками или выполнения любой другой задачи на вашем компьютере с пользовательского интерфейса. Я не знаю, хорошая ли это идея, , но это, безусловно, выполнимо.

+0

Спасибо за ваш очень подробный ответ! Я должен найти лучшее решение для создания/создания статического html из формы. Я смотрел на ** reactjs **, и я думаю, что это хорошее начало. Еще раз спасибо. – mstroiu