0

concat と uglify はビルド タスクの後半で実行されるため、yeoman angular generator が useminPrepare タスク内に concat タスクを持っている理由について少し混乱しています。

// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
useminPrepare: {
  html: '<%= yeoman.app %>/index.html',
  options: {
    dest: '<%= yeoman.dist %>',
    flow: {
      html: {
        steps: {
          js: ['concat', 'uglifyjs'],
          css: ['cssmin']
        },
        post: {}
      }
    }
  }
},



  grunt.registerTask('build', [
    'clean:dist',
    'bowerInstall',
    'useminPrepare',
    'concurrent:dist',
    'autoprefixer',
    'concat',
    'ngmin',
    'copy:dist',
    'cdnify',
    'cssmin',
    'uglify',
    'rev',
    'usemin',
    'htmlmin'
  ]);

誰かが私を啓発できますか?

4

1 に答える 1

1

このuseminPrepareタスクは実際には縮小を行いませんが、代わりに HTML を解析し、他のタスクに適切な構成を設定します。たとえば、HTML にこれがあるとします。

<!-- 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 -->

このuseminPrepareタスクは、次の構成を設定します。

{
  concat: {
    '.tmp/concat/js/app.js': [
      'app/js/app.js',
      'app/js/controllers/thing-controller.js',
      'app/js/models/thing-model.js',
      'app/js/views/thing-view.js'
    ]
  },
  uglifyjs: {
    'dist/js/app.js': ['.tmp/concat/js/app.js']
  }
}

HTML のブロックは次のように置き換えられます。

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

詳細については、https://github.com/yeoman/grunt-useminを参照してください。

于 2014-04-25T11:00:52.377 に答える