【问题标题】:Grunt + Yeoman - How to stop rewrite linked JS files in index.html?Grunt + Yeoman - 如何停止在 index.html 中重写链接的 JS 文件?
【发布时间】:2026-02-19 11:50:01
【问题描述】:

我有一个使用 Yeoman 和 Grunt 构建的 Angular 项目。每次如果我运行命令:

sudo grunt serve 

应用程序是否正常启动,但 index.html 中的一些链接库已从 bower_components 目录中删除。

FXP:

<script src="bower_components/spin.js/spin.js"></script>

所以我必须每次都在 git 中还原 index.html 文件中的更改,然后才能继续测试。

有没有办法解决这个烦人的问题?

感谢您的帮助。

编辑:

我尝试了以下操作:

已安装:

npm install grunt-script-inject

GrunFile.js

 // Automatically inject Bower components into the app
    wiredep: {
      app: {
        src: ['<%= yeoman.app %>/index.html'],
        ignorePath: new RegExp('^<%= yeoman.app %>/|../')
      },
    scriptinject: {
      dev: {
         srcs: ['<%= yeoman.client %>/bower_components/path/to/src/plugin.js',
                '<%= yeoman.client %>/bower_components/path/to/src/plugin2.js'] ,//order is important if this sciprt will be concated and minified
         html: '<%= yeoman.client %>/index.html', //file that as the block comment to look for a place to insert the script tags
         without: '<%= yeoman.client %>/' //this script will be used to remove this block of string of script tag file location
        }
      }
    },

 grunt.registerTask('serve', 'Compile then start a connect web server', function (target) {
    if (target === 'dist') {
      return grunt.task.run(['build', 'connect:dist:keepalive']);
    }

    grunt.task.run([
      'clean:server',
      'wiredep',
      'scripinject',
      'concurrent:server',
      'autoprefixer',
      'connect:livereload',
      'watch'
    ]);
  });

但是现在,在 grunt serve 之后我看到以下错误:

Running "serve" task
Warning: Task "scripinject" not found. Use --force to continue.

Aborted due to warnings.

怎么了?

【问题讨论】:

  • 只是因为在 grunt.task.run 中没有提到 'scripinject' 应该是 'scriptinject'。因此“找不到任务“scripinject””。

标签: angularjs gruntjs yeoman yeoman-generator-angular


【解决方案1】:

我在 bower install 命令中使用 --s 解决了

所以:

bower install --save  angular-translate

工作正常。

这是文档:

http://bower.io/docs/api/#install

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。 在 index.html 我添加了以下代码:

    <script src="bower_components/highcharts-release/highcharts.js"></script>
    <script src="bower_components/highcharts-release/modules/heatmap.js"></script>
    

    每次我运行grunt servegrunt build 命令时,grunt 都会将其重写为:

    <script src="bower_components/highcharts-release/highcharts.js"></script>
    <script src="bower_components/highcharts-release/highcharts-more.js"></script>
    <script src="bower_components/highcharts-release/modules/exporting.js"></script>
    

    所以我查看了bower_components/highcharts-release/bower.json 文件并看到:

    {
      "name": "highcharts",
      "version": "v4.1.4",
      "main": [
        "highcharts.js",
        "highcharts-more.js",
        "modules/exporting.js"
      ]
    }
    

    我改成:

    {
      "name": "highcharts",
      "version": "v4.1.4",
      "main": [
        "highcharts.js",
          "modules/heatmap.js"
      ]
    }
    

    现在一切都很好。希望它会对某人有所帮助,即使这是一个很晚的答案。

    【讨论】: