4

我目前正在使用 usemin 任务来执行我的 concat 和 uglify 任务。但是,我没有从 concat/uglify 任务中得到任何输出。没有看到任何错误或警告。如何获得生成的输出dist/app/myscript.js脚本?

Gruntfile.js 如下:

module.exports = function(grunt){
  var paths = {
    app: 'app',
    dist: 'dist'
  };

  grunt.initConfig({
    paths: paths,
    clean: {
      dist: {
        src: ['<%= paths.dist %>']
      }
    },
    copy: {
        dist: {
            files: [
                {expand: true, cwd: '.', src: ['**'], dest: '<%= paths.dist %>/'}
            ]
        }
    },
    useminPrepare: {
      html: '<%= paths.dist %>/<%= paths.app %>/index.html'
    },
    usemin: {
        html: '<%= paths.dist %>/<%= paths.app %>/index.html'
    }
  });

  grunt.loadNpmTasks('grunt-usemin');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.registerTask('default', ['clean','copy']);
  grunt.registerTask('use', ['useminPrepare','usemin'])
}

HTML 构建片段:

<!-- build:js myscript.js -->
<script type="text/javascript" src='router.js'></script>
<script type="text/javascript" src='bootstrap.js'></script>
<!-- endbuild -->

控制台输出:

Running "useminPrepare:html" (useminPrepare) task
Going through dist/app/index.html to update the config
Looking for build script HTML comment blocks

Found a block:
<!-- build:js myscript.js -->
<!-- Globals -->
<script type="text/javascript" src='router.js'></script>
<script type="text/javascript" src='bootstrap.js'></script>
<!-- endbuild -->
Updating config with the following assets:
    - dist/app/router.js
    - dist/app/bootstrap.js

Configuration is now:

  cssmin:
  {}

  concat:
  { 'dist/app/myscript.js': 
   [ 'dist/app/router.js',
     'dist/app/bootstrap.js' ] }

  uglify:
  { 'dist/app/myscript.js': 'dist/app/myscript.js' }

  requirejs:
  {}

Running "usemin:html" (usemin) task

Processing as HTML - dist/app/index.html
Update the HTML to reference our concat/min/revved script files
Update the HTML with the new css filenames
Update the HTML with the new img filenames
Update the HTML with data-main tags
Update the HTML with the data tags
Update the HTML with background imgs, case there is some inline style
Update the HTML with anchors images
Update the HTML with reference in input

Done, without errors.
4

2 回答 2

6

原来问题出在 registerTask() 上。您需要显式添加 concat/uglify。所以它应该看起来像这样: grunt.registerTask('use', ['useminPrepare','usemin','concat','uglify'])

于 2013-10-19T21:24:48.733 回答
2

技术上grunt-usemin还不够成熟,无法在失败时给你错误,这是我迄今为止的观察。

Processing as HTML, Update the HTML .......即使它在某个地方失败,它也总是显示出来。

让我们回到解决方案,我认为您的 HTML 构建片段中有问题,您没有提到 myscript.js 之前应该有 app 的正确路径 -<!-- build:js app/myscript.js -->

让我知道它是否仍然没有解决问题。

于 2013-05-22T10:30:07.430 回答