我想将我的linkchecker测试包含到grunt中。我可以用powershell很好地执行它

& 'C:\Program Files (x86)\LinkChecker\linkchecker.exe' http://localhost:3000


这是我的Gruntfile:

module.exports = function (grunt) {

    //load plugins
    [
        'grunt-cafe-mocha',
        'grunt-contrib-jshint',
        'grunt-exec',
    ].forEach(
        function(task){
            grunt.loadNpmTasks(task);
        }
    );

    //configure plugins
    grunt.initConfig(
        {
/*          cafemocha: {
                all: {
                    src: 'qa/tests-*.js',
                    options: {
                        ui: 'tdd',
                    }
                }
            },*/
            jshint: {
                app: [
                    'meadowlark.js',
                    'public/js/**/*.js',
                    'lib/**/*.js',
                ],
                qa: [
                    'Gruntfile.js',
                    'public/qa/**/*.js',
                    'qa/**/*.js,'
                ]
            },
            exec: {
                linkchecker: {
                    cmd: '\& \'C:\\Program Files (x86)\\LinkChecker\\linkchecker.exe\' http://localhost:3000'
                }
            },
        }
    );

    //register tasks
    grunt.registerTask(
        'default',
        [/*'cafemocha',*/ 'jshint', 'exec']
    );
};


我真的很头疼,将对linkchecker的调用整合为咕unt。我已经尝试了第39行的几个呼叫:

1.使用完整路径转义所有内容:

cmd: '& \'C:\\Program Files (x86)\\LinkChecker\\linkchecker.exe\' http://localhost:3000'


结果:

“&” kann syntaktisch是一个死者Stelle nicht verarbeitet werden。
退出代码:1。

翻译:无法处理&

2.使用完整路径转义所有内容和&

cmd: '\& \'C:\\Program Files (x86)\\LinkChecker\\linkchecker.exe\' http://localhost:3000'


结果:

^ [W044]错误或不必要的转义。

3.为linkchecker.exe的路径设置一个本地变量:

cmd: '$env:linkchecker http://localhost:3000'


结果:

死于日期的语法,死于日期的错误。
退出代码:1。

翻译:局部变量$env:linkchecker未被解析

4.将呼叫外包到脚本。

cmd: '.\\qa\\linkchecker.ps1'


结果:linkchecker.ps1在编辑器中成为openend。

我也尝试过grunt-shell。问题似乎是咕gr声必须将&传递给shell。它不能处理&,并且用\&转义也无济于事。

最佳答案

终于弄清楚了:

cmd: '"C:\\Program Files (x86)\\LinkChecker\\linkchecker.exe" http://localhost:3000'

关于javascript - 用grunt-exec和powershell执行linkchecker.exe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25081078/

10-10 15:20