【问题标题】:How to concatenate JavaScript files without a build tool?如何在没有构建工具的情况下连接 JavaScript 文件?
【发布时间】:2015-10-04 21:25:51
【问题描述】:

在不使用 Ant、Grunt 或类似工具的 bash 中,我想连接一些文件。

我不认为应该比几行 bash 更难。

我不想像他们在SO Post 中那样使用构建工具。

我想使用类似于 SO Post 的 bash。

应该是这样的:

cat *.js > all.txt

但是,我只想对具有这种形式的 .js 文件进行分类

object.SomeName.js

作为一个附带问题,大多数人是否将他们的 .js 分解为对象?

怎么样:

cat object.*.js >> all.txt

对象之间也存在依赖关系,因此排序很重要。

cat 的工作顺序是什么?

【问题讨论】:

  • 听起来你只需要阅读 bash 中匹配的通配符文件...
  • 我发布了我认为的答案,但是 b.c.有依赖关系,我需要知道 cat 工作的顺序,或者可能有一个击球手 bash 工具?
  • 这个答案:serverfault.com/a/122743 说 bash 通配符扩展是按字母顺序排列的。
  • 你可以给depends添加一个前缀来确保alpha顺序是正确的。
  • 我有依赖关系,所以我认为我不应该这样做。我必须想出一个命名约定来确保顺序。例如,如果 obj2 需要 obj0 和 obj1,我需要确保首先加载它们。

标签: bash concatenation


【解决方案1】:

首先,创建一个描述依赖项的文件。

obj0 obj2
obj1 obj2

现在tsort(1)可以给你下单了。

$ tsort dep.txt
obj0
obj1
obj2

现在您可以依次读取每一行并以正确的顺序输出文件。

{
  while read obj
  do
    cat "object.$obj.js"
  done < <(tsort dep.txt)
} > all.js

【讨论】:

  • 这是对侵权的一个很好的解释 - viget.com/extend/dependency-sorting-in-ruby-with-tsort - 它使用依赖哈希。我可以写dep吗? JSON 格式的 txt 文件?还是只是像您的示例中那样用空格分隔。
  • @cadegalt:正如手册页所解释的,输入文件是空格分隔的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2023-03-09
  • 2012-03-18
  • 1970-01-01
相关资源
最近更新 更多