运行grunt-usemin时收到错误消息“No”concat“targets found”

时间:2015-07-14 14:11:47

标签: node.js debugging gruntjs bower filepath

我的grunt文件如下所示:

module.exports = function(grunt) {

    // Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
            },
            build: {
                src: 'src/**/*.js',
                dest: 'dist/<%= pkg.name %>.min.js'
            }
        },
        watch: {
            js: {
                files: ['src/**/*.js'],
                options: {
                    livereload: '<%= connect.options.livereload %>'
                }
            },
            livereload: {
                options: {
                    livereload: '<%= connect.options.livereload %>'
                },
                files: [
                    'src/**/*.html',
                    'src/**/*.css',
                    'src/assets/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
                ]
            }
        },
        connect: {
            options: {
                port: 9000,
                livereload: 35729,
                hostname: 'localhost'
            },
            livereload: {
                options: {
                    open: true,
                    // base: [
                    //     '.tmp',
                    //     ''
                    // ]
                    middleware: function(connect) {
                        return [
                            connect.static('.tmp'),
                            connect().use(
                                '/bower_components',
                                connect.static('./bower_components')
                            ),
                            connect().use(
                                '/app/styles',
                                connect.static('./app/styles')
                            ),
                            connect.static('src')
                        ];
                    }
                }
            }
        },
        copy: {
            app: {
                cwd: 'src', // set working folder / root to copy
                src: '**/*.html', // copy all files and subfolders
                dest: 'dist/', // destination folder
                expand: true
            },
            assets: {
                cwd: 'src', // set working folder / root to copy
                src: 'assets/*', // copy all files and subfolders
                dest: 'dist/', // destination folder
                expand: true
            }
        },
        useminPrepare: {
            options: {
                dest: 'dist'
            },
            html: 'src/index.html'
        },

        usemin: {
            html: ['dist/index.html']
        }

    });

    // Load the plugin that provides the "uglify" task.
    // grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-connect');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-usemin');

    // Default task(s).
    grunt.registerTask('default', ['useminPrepare', 'copy', 'concat', 'uglify', 'usemin']);
    grunt.registerTask('serve', function(target) {
        grunt.task.run([
            'connect:livereload',
            'watch'
        ]);
    });

};

当我运行grunt获取错误消息为“No”concat“targets found”。 我已经尝试了2个小时来解决这个问题但没有结果请帮我解决问题。

2 个答案:

答案 0 :(得分:4)

方式为时已晚,但万一它对其他人有用:我相信useminprepare会自动生成一个concat配置并将其提供给grunt任务运行器,所以上面的响应不太准确我会说。

我会尝试查看src / index.html中的构建块,并检查路径是否正确指向了使用minPrepare将连接的资源。我现在正在努力解决这样的问题:S

参考此处:https://github.com/yeoman/grunt-usemin

答案 1 :(得分:0)

使用以下过程进行调试:

  • 运行sample project

  • 指定temp存储位置(tempstaging)目录

  • 在运行usemin之前,请确保tempstaging目录不为空

  • 如果为空,请运行grunt copy任务,其中tempstaging目录设置为dest参数

  

关于目录和任务,要记住的主要区别是,对于useminPrepare,目录需要指示输出处理器管道的正确配置所需的输入,瞬态和输出路径,而在usemin的情况下,它只反映输出路径,因为所有需要的资产都应该输出到目标目录(转换或刚刚复制)。

<强>参考