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

Is it possible not to mention all the script file paths in grunt?

本文关键字:脚本 路径 文件 grunt 是否      更新时间:2024-02-02

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

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

看看gruntjs-doc中关于"Globbing模式"answers"动态构建文件对象"的连续两段:http://gruntjs.com/configuring-tasks#globbing-图案

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

编辑:

基于注释和您不能控制所有代码的事实,usemin的另一种选择是使用示例gruntfile中演示的"src"answers"dist"目录结构来处理批量移动/concat/uglify。

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

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

原件:

基于这一点和你今天提出的另一个问题,听起来usemin可能不是满足你需求的合适工具。像require.js这样的东西会减少HTML中脚本标记的数量,但会将枚举它们的需要转移到不同的文件/位置。。。你的抱怨似乎是把所有的脚本都写成代码中的清单。

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

清单或显式列出文件的好处随着项目规模或复杂性的增长而变得更加明显。从目录中添加/删除文件的一个无辜错误可能会导致混乱,而且原因还不清楚。如果目录中缺少文件,则在HTML中显式列出文件会导致usemin抛出错误。稍后,您还可以审核目录,查看即使不再使用,仍有哪些文件延迟。对他们进行金球奖并不能提供这两种好处。

如果没有清单,可以通过明智地使用VCS和审查自上次提交以来的更改来解决问题。。。但这并不像说"嘿,script.js被删除了,这导致usemin呕吐,所以有人欠我一杯饮料,因为我替换了文件并使构建重新工作!"