Grunt + Yeoman — Как перестать перезаписывать связанные файлы JS в index.html?

У меня есть проект Angular, созданный с помощью Yeoman и Grunt. Каждый раз, когда я запускаю команду:

sudo grunt serve 

Приложение нормально запускается, но в index.html удалены некоторые связанные библиотеки из каталога bower_components.

FXP:

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

Поэтому я должен каждый раз возвращать изменения в файле index.html в git, прежде чем продолжить тестирование.

Есть ли возможность, как я могу решить эту досадную проблему?

Спасибо за любую помощь.

ИЗМЕНИТЬ:

Я пробовал следующее:

Установлены:

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'
    ]);
  });

Но теперь, после подачи ворчания, я вижу следующую ошибку:

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

Aborted due to warnings.

Что не так?


person redrom    schedule 18.09.2014    source источник
comment
Просто потому, что не было упомянуто, что «scripinject» должен быть «scriptinject» в grunt.task.run. Следовательно, «Скрипт задачи не найден».   -  person vonwolf    schedule 16.12.2014


Ответы (2)


Я решил использовать --s в команде установки Bower

So:

bower install --save  angular-translate

Работает отлично.

Вот документация:

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

person redrom    schedule 14.10.2014

У меня была аналогичная проблема. В index.html я добавил следующий код:

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

и каждый раз, когда я запускал команды grunt serve или grunt 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"
  ]
}

и теперь все в порядке. Надеюсь, это поможет кому-то, даже это довольно поздний ответ.

person michal-husak    schedule 13.04.2015