1

我正在使用 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/**/*不提及每个文件?
这可能吗?

4

2 回答 2

0

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

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

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

于 2013-12-02T17:44:37.297 回答
0

编辑:

根据评论和您不控制所有代码的事实,替代方法是使用示例 gruntfileusemin中演示的“src”和“dist”目录结构来处理批量移动/concat/uglify。

  1. 在源 HTML 中,引用 grunt 任务将在您的“dist”目录中生成的文件。
  2. 配置grunt-watchcopyconcatuglify在更改时从 'src' 中配置文件。
  3. 当您需要测试或上传到生产环境时,您可以在“dist”之外进行,而不必担心“src”中可能添加或更改了哪些脚本。
  4. grunt-watch如果您只是从另一个项目添加新文件,您可以创建并调用一个“构建”任务,该任务执行与 #3 中相同的三个任务。

如果您四处寻找,您可以在几个 javascript 框架中找到这种方法的示例,您可以根据自己的需要借用和修改这些框架。 这篇文章可能有用。

原来的:

基于这个和您今天提出的其他问题,听起来usemin可能不是您需要的正确工具。像require.js这样的东西会减少 HTML 中脚本标签的数量,但会将枚举它们的需要转移到不同的文件/位置......你的抱怨似乎是将所有脚本作为清单/列表写入编码。

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

随着项目规模或复杂性的增长,清单或明确列出文件的好处变得更加明显。从目录中添加/删除文件的无辜错误可能会导致混乱,并且原因尚不清楚。如果目录中缺少文件,则在 HTML 中显式列出文件会导致usemin引发错误,之后,您还可以审核目录以查看即使不再使用的文件仍然存在的内容。覆盖它们不会提供任何这些好处。

如果没有清单,可以通过明智地使用 VCS 和审查自上次提交以来的更改来解决问题……但这并不像说“嘿,script.js被删除了,这会导致usemin呕吐那么简单或有趣”有人欠我一杯饮料来替换文件并让构建再次运行!”

于 2013-12-02T18:10:06.030 回答