【问题标题】:Run gulp programmatically in memory在内存中以编程方式运行 gulp
【发布时间】:2023-03-18 13:45:01
【问题描述】:

具体问题

我可以从节点运行 gulp 并从中获取返回 var 而不操作任何文件,只读取它们吗?

更多背景

我正在尝试构建与Modernizr's build tool 不同的东西。我在磁盘上有几个文件,并希望让访问者有机会在表单中选择其中的一个子集并提交它。

然后应该发生的是访问者将获得下载作为提交的返回(一个 zip 文件),其中包含他/她选择策划和处理的那些文件(缩小、连接和其他一些魔法)。

现在,在我的狂热中,我创建了一个 POC,它是一个 NodeJS 应用程序,它监听一个端口并严重依赖回调来遍历每一组魔法,然后构建所有文件并将它们压缩到内存中并将其作为请求的结果。

虽然感觉很脏。我认为应该将所有流整齐地放在一起以进行即插即用操作,但我不确定如何。我从未使用过 gulp,而且我的印象是它只会操作磁盘上的文件?

我想在内存中创建所有内容的原因是我不想担心垃圾收集器和多个会话相互覆盖。

【问题讨论】:

  • 但是您可以创建一个单独的文件夹来进行 gulp 操作,一旦文件准备好/下载,清理该文件夹...您可以使用 guid 文件夹名称,这将避免覆盖等
  • 是的,但我试图避免这种逻辑。 :)

标签: node.js stream gulp


【解决方案1】:

你不能编写 gulp 插件并使用它来代替 gulp.dest() 调用吗? Gulp 在流/管道上运行,所以这可能是一个解决方案。我不认为 Gulp 唯一能做的就是在磁盘上获取结果。

【讨论】:

  • 是的,你是对的,这就是我试图做的。稍后我将不得不重新访问它以进行重构。您是说在编写 gulp 插件时有一个 finale 管道将它带到磁盘上,我可以简单地取出并将我的数据传输到我自己的进程?我很小的展示可能会产生正确的答案。
  • @Dominik 是的,我相信这就是 gulp.dest() 的作用。它需要一个管道并从中写出文件。
  • 如果您编辑您的答案以显示一个小例子,我将更改正确答案给您,因为这将是适当的答案。
【解决方案2】:

Gulp 适用于全局选择。据我所知,除了硬编码之外,没有现有的方法(在 gulp 中)传递特定文件。

我能想到的将文件选择参数化的唯一方法是:

一个。创建你的任务,这样你就可以在 CLI 中将它们作为标志传递给 yargs 这样的东西会很有用

b.设置基本目录并创建一些会自动显示文件的东西,检查像 inquirer 这样的插件应该会有所帮助

【讨论】:

  • 所以也许 gulp 不是正确的方法?有更好的主意吗?
  • 想得更大,编写自己的服务器端解决方案,可以使用从 PHP 到 Java 的任何东西,这样您就可以将其粘贴在主机上并在任何地方访问它。
  • 是的,我同意。我必须使用节点。然后必须了解流...
  • 我们客户的要求... ;)
  • 那么使用节点作为网络服务器?
猜你喜欢
  • 1970-01-01
  • 2019-11-28
  • 2013-09-23
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2012-10-10
相关资源
最近更新 更多