Grunt:获取错误的行号

肥皂

我正在将Grunt与node.js结合使用,并试图让Grunt告诉我它在Gruntfile.js中发现错误的位置。似乎很奇怪,默认情况下不会这样做。

对于grunt watch,我收到此错误:

Loading "Gruntfile.js" tasks...ERROR
>> SyntaxError: Unexpected string
Warning: Task "watch" not found. Use --force to continue.

我真的很想知道意外字符串在哪行,但是我无法让Grunt告诉我。

当我尝试时grunt watch --stack,它显示了节点文件的整个node.js堆栈跟踪,但没有显示Gruntfile.js中错误的来源。

grunt.option('stack', true);按照此答案的建议,将Gruntfile.js添加到顶部不会产生任何影响。

我的Gruntfile.js:

var path_dev = 'app/assets/_dev';
var path_live = 'app/assets'; 
var url_dev = '//assets.domain.dev/_dev';

module.exports = function (grunt) {
    grunt.option('stack', true);
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        banner: '/*!\n' +
                '* <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> - Copyright <%= grunt.template.today("yyyy") %> \n' +
                '* @author <%= pkg.author %>\n' +
                '*/',

        path_dev: path_dev,
        path_live: path_live,
        url_dev: url_dev,

        clean: {
            build: {
                src: [
                    '<%= path_live %>/css/',
                    '<%= path_live %>/js/'
                ]
            }
        },

        concat: {
            options: {
                separator: ';'
            },
            build: {
                src: [
                    '<%= path_dev %>/js/core/jquery.min.js',
                    '<%= path_dev %>/js/core/bootstrap.min.js',
                    '<%= path_dev %>/js/core/jquery.slimscroll.min.js',
                    '<%= path_dev %>/js/core/jquery.scrollLock.min.js',
                    '<%= path_dev %>/js/core/jquery.appear.min.js',
                    '<%= path_dev %>/js/core/jquery.countTo.min.js',
                    '<%= path_dev %>/js/core/jquery.placeholder.min.js',
                    '<%= path_dev %>/js/core/js.cookie.min.js',
                    '<%= path_dev %>/js/main.js'
                ],
                dest: '<%= path_live %>/js/global.js'
            }
        },

        uglify: {
            options: {
                banner: '<%= banner %>'
            },
            build: {
                files: {
                    '<%= path_live %>/js/global.js': ['<%= path_live %>/js/global.js']
                }
            }
        },

        copy: {
            build: {
                files: [
                    {
                        expand: true,
                        cwd: '<%= path_dev %>/css/',
                        src: 'bootstrap.min.css',
                        dest: '<%= path_live %>/css/'
                    },
                    {
                        expand: true,
                        cwd: '<%= path_dev %>/fonts/',
                        src: '**',
                        dest: '<%= path_live %>/fonts/'
                    },
                    {
                        expand: true,
                        cwd: '<%= path_dev %>/img/',
                        src: '**',
                        dest: '<%= path_live %>/img/'
                    },
                    {
                        expand: true,
                        cwd: '<%= path_dev %>/js/plugins/',
                        src: '**',
                        dest: '<%= path_live %>/js/plugins/'
                    }
                ]
            }
        }
    });

    var tasks_to_watch = [];
    var less = {}; 
    var watch = {};


    //less:build
    less['build'] = {
        options: {
            compress: true,
            yuicompress: true,
            optimization: 2,
        },
        files: {}
    };
    less['build']['files'][path_live+'/css/global.css'] = path_dev'/less/main.less';
    less['build']['files'][path_live+'/css/apps/**/*.css'] = path_dev'/less/apps/**/*.less';


    //less:dev_main
    less['dev_main'] = {
        options: {
            sourceMap: true,
            sourceMapURL: url_dev+'/css/global.css.map',
        },
        files: {}
    };
    less['dev_main']['files'][path_dev+'/css/global.css'] = path_dev'/less/main.less'; 

    tasks_to_watch.push('less:dev_main');



    //less:(dynamically find .less files)
    grunt.file.recurse(path_dev+'/less/apps/', function(abspath, rootdir, subdir, filename) {

        if(filename.match(/\.less$/g)){
            var name = filename.substring(0, filename.lastIndexOf('.'));
            var thisurl = url_dev+'/css/apps/app/'+name+'.css';
            var thispath = path_dev+'/css/apps/app/'+name+'.css';

            less[name] = {
                options: {
                    sourceMap: true, 
                    sourceMapURL: thisurl+'.map',
                }, 
                files: {}
            };
            less[name]['files'][thispath] = abspath;
            tasks_to_watch.push('less:'+name);
        }
    }); //grunt.file.recurse()


    watch = {
        styles: {
            files: [path_dev+'/less/**/*.less'],
            tasks: tasks_to_watch,
            options: {
                nospawn: true
            }
        }
    };

    //now repurpose the array to contain all tasks, so we can register them all below
    tasks_to_watch.push('less:build');
    tasks_to_watch.push('watch');

    //load tasks
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-copy');

    grunt.config('less', less);
    grunt.config('watch', watch);

    //register tasks
    grunt.registerTask('default', tasks_to_watch);
    grunt.registerTask('build', ['clean:build', 'less:build', 'concat:build', 'uglify:build', 'copy:build']);
};
米歇尔

问题出现在网上:104、105和116,您在+之后错过了加path_dev

less['build']['files'][path_live+'/css/global.css'] = path_dev+'/less/main.less';

请修复其他问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取错误行号Python

来自分类Dev

获取shell脚本错误的行号

来自分类Dev

获取行号以获取Node.js错误

来自分类Dev

使用source()时如何获取错误的行号?

来自分类Dev

如何从python中的exec或execfile获取错误的行号

来自分类Dev

webpack-dev-server:如何获取原始文件的错误行号

来自分类Dev

在TSQL错误消息后获取文件中的行号

来自分类Dev

如何获取混淆的.NET代码中的错误行号?

来自分类Dev

如何从require.js错误中获取行号?

来自分类Dev

我如何获取Chicken方案错误的行号信息

来自分类Dev

webpack-dev-server:如何获取原始文件的错误行号

来自分类Dev

根据错误行号C#获取XML记录号

来自分类Dev

如何获取代码行号和错误信息?

来自分类Dev

获取HTML元素的行号

来自分类Dev

获取方法声明的行号

来自分类Dev

如何从grep获取行号?

来自分类Dev

获取插入行的行号

来自分类Dev

如何从grep获取行号?

来自分类Dev

如何从vlookup获取行号?

来自分类Dev

获取执行代码的行号

来自分类Dev

获取文件的行号

来自分类Dev

获取行号(如Excel)

来自分类Dev

从字符位置获取行号

来自分类Dev

获取定义变量的行号

来自分类Dev

按行号获取文本

来自分类Dev

Excel公式:使用INDIRECT获取具有指定范围的相同行号会导致#VALUE!错误

来自分类Dev

C#-如何使用XmlSchemaSet验证XML时在错误消息中获取正确的行号?

来自分类Dev

Python compile()函数:获取行号和最后一条错误消息

来自分类Dev

如何从v8脚本编译错误中获取行号和列?