在 Deno 2 中使用 gulp 时出现奇怪的行为

问题描述 投票:0回答:1

现在 Deno 2 支持 npm,我正在尝试在 Deno 2 中使用 gulp。但是我遇到了奇怪的行为,这让我怀疑这是否可行。我将提供稍后使用的步骤列表,但首先,这是我的 gulpfile.js 和我所看到的行为:

import {series} from 'gulp';

// ----------------------------

export const clean = (cb) => {
    console.log("CLEANING UP");
    cb();
    }

export const compile = (cb) => {
    console.log("COMPILING");
    cb();
    }

export const build = (cb) => {
    series(clean, compile);
    cb();
    }

使用 git bash shell:

$ gulp clean
[08:53:17] Using gulpfile ~\gulp\gulpfile.js
[08:53:17] Starting 'clean'...
CLEANING UP
[08:53:17] Finished 'clean' after 3.34 ms

$ gulp compile
[08:53:26] Using gulpfile ~\gulp\gulpfile.js
[08:53:26] Starting 'compile'...
COMPILING
[08:53:26] Finished 'compile' after 2.5 ms

$ gulp build
[08:53:30] Using gulpfile ~\gulp\gulpfile.js
[08:53:30] Starting 'build'...
[08:53:30] Finished 'build' after 3.03 ms

如您所见,当运行名为“clean”和“compile”的任务时,文本会输出到控制台。但是,当通过 series() 函数运行任务时,终端不会输出任何内容。这让我想知道各个任务是否正在运行。

以下是我在 git bash shell 中使用的步骤,从我的主目录开始:

$ mkdir gulp
$ cd gulp
$ deno init
$ npm install -g gulp-cli    // unless you already have gulp's CLI installed
$ deno install npm:gulp

然后,创建上面的

gulpfile.js
并按上面的方式运行 gulp 任务。

我认为奇怪的一件事,可能是一个线索,是即使在运行

deno install npm:gulp
之前,因此在我的项目中本地安装 gulp,执行
gulp --version
产生:

$ gulp --version
CLI version: 3.0.0
Local version: 5.0.0

我没想到会看到本地版本,因为我是在一个全新的文件夹中创建一个全新的项目。

(如果您愿意,可以随时停止阅读)为什么首先将 gulp 与 Deno 结合使用?

答案:我想用代码定义我的任务,即 JavaScript、TypeScript,或者在我的例子中是 civet。在我的

tasks
文件中使用 Deno 的
deno.json
键是很痛苦的,除非你的任务非常简单。如果我可以直接在 deno.json 文件中执行此操作,那就太好了,但 JSON 不允许函数作为值。就我个人而言,我认为 JSON 很糟糕。 JSONC 有一点改进,因为它允许注释和尾随逗号,但仍然不允许函数。我希望 Deno 允许我创建一个
deno.js
文件 - 或者
deno.ts
如果您愿意的话。它可以很容易地检查,例如函数作为值仅出现在“tasks”键下,已授予必要的权限等。然后(如果提供了函数series()、parallel()等)就不需要外部构建系统.

gulp deno
1个回答
0
投票

针对问题的最后一段,值得注意的是,Deno 2.1 引入了 任务依赖项,它允许直接在

deno.json
文件中进行更复杂的任务定义。此功能使开发人员能够定义任务之间的依赖关系,确保某些任务先于其他任务执行。

例如,您可以创建一个脚本来解决您概述的问题,然后通过在

deno task.ts
文件中指定
deno.json
命令来将其作为依赖项运行。这种方法可以帮助您实现所需的行为,尽管是间接的。

© www.soinside.com 2019 - 2024. All rights reserved.