包含 100 个文件的 Rake 文件任务

发布于 2024-10-06 19:58:44 字数 401 浏览 8 评论 0原文

我现在刚刚学习 Rake 中的文件任务。我有 100 个 javascript 源文件,它们连接到 10 个左右的文件。我发现这种映射可以通过文件任务智能地完成。看来您需要指定每个文件。

有没有一种有效的方法来编写一个文件任务,递归地查找所有这些 javascript 文件并将它们与右侧的串联文件进行比较?连接部分是一个棘手的步骤,目前正在由自定义构建工具完成,直到我可以在 ruby​​ 中实现它。

例如,

/a.js
/c.js            -----------> base.js
/geo/b.js
/geo/c.js        -----------> geo.js
/mod/d.js
/mod/e.js        -----------> mod.js

I'm just now learning about file tasks in Rake. I have 100s of javascript source files, that get concatenated to 10 or so files. I see this kind of mapping can be done intelligently with file tasks. It appears you need to specify every file.

Is there an efficient way to write a file task that recursively finds all of these javascript files and compare them to the concatenated files on the right side? The concatenation part is a tricky step and is being done by a custom build tool at the moment until I can get that in ruby.

For example,

/a.js
/c.js            -----------> base.js
/geo/b.js
/geo/c.js        -----------> geo.js
/mod/d.js
/mod/e.js        -----------> mod.js

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

匿名的好友 2024-10-13 19:58:44
file 'base.js' => Dir['*.js'] do |t|
  concatenate t.prerequisites, t.name
end

file 'geo.js' => Dir['geo/*.js'] do |t|
  concatenate t.prerequisites, t.name
end

依此类推,显然,您必须自己实现 concatenate 方法(在我的示例中,第一个参数是文件列表,第二个参数是目标文件,例如 geo.js< /代码>)。如果所有创建的文件都以目录命名,您可以执行以下操作:

%w(geo mod xyz abc).each do |module|
  file "#{module}.js" => Dir["#{module}/*.js"] do |t|
    concatenate t.prerequisites, t.name
  end
end

如果目录可以以某种方式进行通配,您可以通过用 Dir[...] 替换目录名称列表来使其更加动态也。

file 'base.js' => Dir['*.js'] do |t|
  concatenate t.prerequisites, t.name
end

file 'geo.js' => Dir['geo/*.js'] do |t|
  concatenate t.prerequisites, t.name
end

and so on, you will have to implement the concatenate method yourself, obviously (in my example the first argument is the list of files and the second is the destination file, e.g. geo.js). If all created files are named after directories you can do something like this:

%w(geo mod xyz abc).each do |module|
  file "#{module}.js" => Dir["#{module}/*.js"] do |t|
    concatenate t.prerequisites, t.name
  end
end

If the directories can be globbed somehow you could make it even more dynamic by replacing the list of directory names with Dir[...] too.

十秒萌定你 2024-10-13 19:58:44

如何调用这个 rake 文件任务?

%w(geo mod xyz abc).each do |module|
  file "#{module}.js" => Dir["#{module}/*.js"] do |t|
    # some code
  end
end

<块引用>

耙子???

How to invoke this rake file task?

%w(geo mod xyz abc).each do |module|
  file "#{module}.js" => Dir["#{module}/*.js"] do |t|
    # some code
  end
end

rake ????

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文