添加新js后,yeoman / grunt-usemin不更新index.html

时间:2013-11-07 20:22:01

标签: javascript html node.js yeoman

我在Windows7上使用带有角度生成器的yeoman用于web应用程序。在运行yo angular之后,我运行grunt来构建应用程序以进行部署。我在dist文件夹中的index.html文件相应地更改了连接和缩小的css和js文件。

当我向index.html添加新的js文件时,例如

<script src="bower_components/json3/lib/json3.js"></script>

然后我再次咕噜咕噜地建造; index.html文件不再将css aan js文件更改为缩小文件,它基本上与app目录中的index.html完全相同。

我也尝试将json3.js放在build中:js comments:

 <!-- build:js scripts/json.js -->
 <script src="bower_components/json3/lib/json3.js"></script>
 <!-- endbuild -->

我在这里缺少什么吗?我必须在grunt文件中更改某些内容,例如usemin部分吗?

4 个答案:

答案 0 :(得分:9)

我反复遇到这个问题并在我的案例中找到了解决方案。

我正在使用vs 2012为grunt任务创建我的HTML和cmd。似乎我的Line结尾不正确,所以我将它们改为Unix(LF)并且grunt-usemin做了它的事情。将行结尾设置为Windows(CR LF)时,grunt-usemin不会正确更新index.html页面。

希望这有助于某人!

答案 1 :(得分:1)

请注意,您的自定义JavaScripts包含在build:js({.tmp,app})部分中,这就是为什么它们会在一个文件中缩小的原因。 我不是建议将由凉亭获得的图书馆放到build:js({.tmp,app}) - 请参阅:https://stackoverflow.com/a/19034513/1432478的评论。

一个好主意可能是关注grunt的cdnify任务 json3 CDN

答案 2 :(得分:1)

我遇到了完全相同的问题。我能找到修复它的唯一方法是在htmlmin任务下的Gruntfile中。

当index.html文件未更改时,我的htmlmin任务如下:

htmlmin: {
  dist: {
    options: {
      //options
    },
    files: [{
      expand: true,
      cwd: '<%= yeoman.app %>',
      src: ['*.html', 'views/{,*/}*.html'],
      dest: '<%= yeoman.dist %>'
    }]
  }
}

如果我只是删除*.html中的html:files:src部分,则构建工作正常。我的新htmlmin任务看起来像这样:

htmlmin: {
  dist: {
    options: {
      //options
    },
    files: [{
      expand: true,
      cwd: '<%= yeoman.app %>',
      src: ['views/{,*/}*.html'],
      dest: '<%= yeoman.dist %>'
    }]
  }
}

希望这有助于某人。我花了一些时间来弄清楚为什么index.html文件没有被正确编辑。

答案 3 :(得分:0)

我遇到了同样的问题,因为我无法添加角度路由和角度动画 - 我的意思是对文件的引用 - 他们的脚本标记 - 没有保存到index.html文件中。

我发现这是因为我之前输入了他们的脚本标签 我的index.html文件中的标记。之后立即放置它们,它工作正常。