是否可以不提及grunt中的所有脚本文件路径?

时间:2013-12-02 16:11:24

标签: javascript node.js gruntjs grunt-usemin

我正在使用gruntjs和usemin任务。 我把它添加到我的html文件中:

<!-- build:js scripts/all.js -->
<script src="../../core/module.js"></script>
<script src="../../core/base/alerts/alert-item.js"></script>
<script src="../../core/base/alerts/alerts-list.js"></script>
<script src="../../core/base/base_model.js"></script>
<script src="../../core/base/cursor.js"></script>
<script src="../../core/...<another script>...."></script>
<script src="../../core/...<another script>...."></script>
<script src="../../core/...<another script>...."></script>
<script src="../../core/...<another script>...."></script>
<!-- endbuild -->

如您所见,所有脚本都位于../../core如何告诉usemin先取../../core/module.js然后../../core/**/*而不提及每个文件?
这有可能吗?

2 个答案:

答案 0 :(得分:0)

对于grunt任务配置,您可以使用globing模式动态构建文件列表。

在gruntjs文档中查看“Globbing patterns”和“动态构建文件对象”的两个连续段落: http://gruntjs.com/configuring-tasks#globbing-patterns

如果您粘贴了usimin任务配置,则可以帮助您构建正确的模式

答案 1 :(得分:0)

编辑:

根据评论以及您无法控制所有代码的事实,usemin的替代方法是使用&#39; src&#39;和&#39; dist&#39;目录结构,如sample gruntfile中所示,用于处理批量移动/连接/ uglify。

  1. 在源HTML中,引用将在&#39; dist&#39;中生成的文件。 grunt任务的目录。
  2. grunt-watch配置为copyconcatuglify来自&#39; src&#39;在改变时。
  3. 当您需要测试或上传到制作时,您可以使用&#39; dist&#39; dist而不必担心可能在“src”中添加或更改了哪些脚本。
  4. 如果您只是从其他项目中添加新文件,则可以创建并调用“#build”#39;执行与grunt-watch相同的三项任务的任务在#3中执行。
  5. 如果你四处寻找,你可以在几个javascript框架中找到这种方法的例子,你可以借用它来修改你的需求。 This article可能有用。

    <强>原始

    基于此以及您今天提出的其他问题,听起来usemin可能不是您需要的正确工具。像require.js之类的东西会削减HTML中脚本标签的数量,但会将需要枚举到不同的文件/位置......你的抱怨似乎是将所有脚本都写成清单/列表中的代码。

    Grunt提供了一种集中处理文件的方法,但在复制目录或进行其他类似的低风险批量工作时,最好使用这种方法。因此,您可以找到在没有逻辑的情况下将usemin用于批量加载的方法,但我建议通常不好的做法是加载所有javascripts&#34;。 ...但如果这就是你想要的,我会问你为什么批量连接和uglify不是答案。

    随着项目规模或复杂性的增加,清单或明确列出文件的好处变得更加明显。从目录中添加/删除文件的无辜错误可能会导致混淆,并且原因不会立即清除。在HTML中显式列出文件会导致usemin在目录中缺少错误时抛出错误,之后,您还可以审核目录以查看仍然存在的内容,即使它已不再使用。全球化他们不会提供这些好处。

    如果没有清单,可以通过明智地使用VCS和自上次提交后对变更的审查来解决问题...但这并不像说“嘿”那样容易或有趣,<嘿,< em> script.js 被删除了,导致usemin barf,所以有人欠我一个饮料,用来替换文件并让构建再次运行!&#34;