0

我在理解 usemin(Prepare) 时遇到问题,如下所述:usemin

我的理解是,使用 usemin,您可以将多个文件组合为一个文件,这在构建 JS 应用程序时是一个好主意。我也了解您应该如何使用它的流程,例如:

// simple build task
grunt.registerTask('build', [
  'useminPrepare',
  'concat:generated',
  'cssmin:generated',
  'uglify:generated',
  'filerev',
  'usemin'
]);

然后,如果您有此代码:

<!-- build:js js/app.js -->
<script src="js/app.js"></script>
<script src="js/controllers/thing-controller.js"></script>
<script src="js/models/thing-model.js"></script>
<script src="js/views/thing-view.js"></script>
<!-- endbuild -->

concat 任务会将所有这些文件合并到一个名为 app.js 的文件中,并将其放在 .tmp 文件夹中。然后 uglify 任务会从 .tmp 文件夹中获取文件 app.js,对其中的所有 js 进行 uglify,然后将其放入 dist-folder。

假设在 useminPrepare 之前,我有另一个任务,它将原始 html (index.html) 也翻译到 dist 文件夹。现在,当 usemin 任务启动时,我已将其设置为使用 dist 文件夹,它应该将旧块替换为对生成的 app.js 的引用。所以现在,在 dist 文件夹内的 html 中,相同的部分应该如下所示:

<script src="js/app.js"></script>

这个对吗?那么现在不应该留下任何评论标签了吗?现在我有一个与usemin有关的问题。情况是这样的:在开始的 html 中,我在 usemin 标签中有 bower_components ( bower-install ) 的注释标签,如下所示:

<!-- build:js js/app.js -->
<script src="js/app.js"></script>
<script src="js/controllers/thing-controller.js"></script>
<!-- bower:js -->
<script src="bower_components/something/some_bower_component.js"></script>
<script src="bower_components/something/some_bower_component.js"></script>
<script src="bower_components/something/some_bower_component.js"></script>
<!-- endbower -->
<script src="js/models/thing-model.js"></script>
<script src="js/views/thing-view.js"></script>
<!-- endbuild -->

使用此设置,一切似乎都运行良好,直到最后执行 usemin 任务。usemin 任务现在无法替换代码块。我已经确定了它不能的原因。这是因为我那里有那些凉亭评论块。因此,如果我分别进行第一个任务,然后将代码传输到 dist,然后删除那些凉亭注释标签,并在构建中制作其余标签,那么一切正常。我想解决这个问题,以便我可以直接运行所有任务。我怎么能解决这个问题?如果看到评论块,为什么 usemin 会失败?我可以更改 usemin 选项以忽略评论块吗?或者我应该写一个 grunt 任务,在注入 bower 组件并将 html 转移到 dist 后删除那些特定的注释块?我拥有的版本是:

"grunt-bower-install": "~0.7.0",
"grunt-concurrent": "~0.4.1",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-coffee": "~0.7.0",
"grunt-contrib-compass": "~0.6.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-connect": "~0.5.0",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-cssmin": "~0.7.0",
"grunt-contrib-htmlmin": "~0.1.3",
"grunt-contrib-uglify": "~0.2.0",
"grunt-usemin": "~2.0.0",
4

1 回答 1

0

看到这个答案:grunt usemin 不会影响 html 文件(index.html)

我自己遇到了这个问题,我的解决方案是将所有行尾转换为 unix 样式的行尾(lf),并避免在由 grunt usemin 转换的任何文件中出现 windows 行尾

于 2015-03-26T13:03:03.560 回答