gulpfile.js中有(#191) redirect_uri is not owned by the application.
定义的几个任务:
gulp.task
我想以编程方式启动其中一个。最好是在同一个进程中(没有exec等),因为这背后的原因之一是能够在调试器中运行脚本。
如何做到这一点?
看起来有类似gulp.task('sync-task', () => { ... });
gulp.task('async-task', cb => { ... });
和gulp.run
的内容,但在Gulp 4中已弃用。
答案 0 :(得分:12)
似乎可以使用package main
import (
"bufio"
"encoding/json"
"fmt"
"io"
"log"
"net"
"os"
"strings"
_"time"
)
const (
COMMAND_TRANSFER_FILE = "TRANSFER_FILE"
COMMAND_EXIT = "EXIT"
CONNECTION_TYPE = "tcp"
CONNECTION_PORT = "3645"
CONNECTION_HOST = ""
)
type Command struct {
Identifier string `json:"identifier"`
Name string `json:"name"`
Size int64 `json:"size"`
}
type Result struct {
Message string `json:"message"`
}
func main() {
conn, _ := net.Dial(CONNECTION_TYPE, CONNECTION_HOST + ":" + CONNECTION_PORT)
decoder := json.NewDecoder(conn)
com := Command{}
sourceFileName := ""
destinationFileName := ""
for {
com = Command{}
reader := bufio.NewReader(os.Stdin)
identifier, _ := reader.ReadString('\n')
com.Identifier = strings.TrimSpace(identifier)
switch com.Identifier {
case COMMAND_TRANSFER_FILE:
fmt.Print("Source file name:")
sourceFileName, _ = reader.ReadString('\n')
sourceFileName = strings.TrimSpace(sourceFileName)
fmt.Print("Destination file name:")
destinationFileName, _ = reader.ReadString('\n')
com.Name = strings.TrimSpace(destinationFileName)
file, err := os.Open(sourceFileName)
if err != nil {
log.Fatal(err)
}
defer file.Close()
fileInfo, err := file.Stat()
fileSize := fileInfo.Size()
com.Size = fileSize
case COMMAND_EXIT:
conn.Close()
os.Exit(0)
}
out, _ := json.Marshal(com)
conn.Write([]byte(string(out) + "\n"))
if strings.Compare(com.Identifier, COMMAND_TRANSFER_FILE) == 0 {
file, err := os.Open(sourceFileName)
if err != nil {
log.Fatal(err)
}
defer file.Close()
n, err := io.Copy(conn, file)
if err != nil {
log.Fatal(err)
}
fmt.Println(n, "bytes sent")
}
var msg Result
err := decoder.Decode(&msg)
if err != nil {
fmt.Println(err)
}
fmt.Println(msg)
}
}
getter函数检索任务并直接调用:
gulp.task
答案 1 :(得分:3)
添加到接受的答案:
是的,您可以通过调用gulp.task
来检索任务,但是与其直接调用,您可以将其包装在对gulp.series
的调用中(大概gulp.parallel
也可以)并调用< em>那个。这样的好处是可以产生预期的“开始/完成”输出。一个例子是:
gulp.series(gulp.task('some-task'))();
输出:
[09:18:32] Starting 'some-task'...
[09:18:32] Finished 'some-task' after 7.96 ms
这已经在gulp v4.0.2。上进行了测试。
答案 2 :(得分:0)
我可以执行以下操作:
gulp.task('sync-task').unwrap()();