我正在尝试使用Grunt将文件从本地分发构建FTP到生产。我已经通过bash文件测试了它的工作原理。我只是无法使用grunt运行它。
在我的grunt文件中:
/*global module:false*/
module.exports = function(grunt) {
grunt.initConfig( {
...
exec: {
ftpupload: {
command: 'ftp.sh'
}
}
} );
grunt.loadNpmTasks('grunt-exec');
grunt.registerTask('deploy', ['ftpupload']);
};
我在命令行尝试grunt deploy
并收到以下错误:
Warning: Task "ftpupload" not found. Use --force to continue.
我在命令行尝试grunt exec
并收到以下错误:
Running "exec:ftpupload" (exec) task
>> /bin/sh: ftp.sh: command not found
>> Exited with code: 127.
>> Error executing child process: Error: Process exited with code 127.
Warning: Task "exec:ftpupload" failed. Use --force to continue.
ftp.sh
文件与Gruntfile.js
位于同一目录。
如何配置它以便我可以运行grunt deploy
并运行bash脚本?
答案 0 :(得分:0)
以下是一些可供尝试的选项......
假设grunt-exec允许运行shell脚本( ...它不是我在之前使用过的包!),请按以下方式重新配置Gruntfile.js
:< / p>
module.exports = function(grunt) {
grunt.initConfig( {
exec: {
ftpupload: {
command: './ftp.sh' // 1. prefix the command with ./
}
}
} );
grunt.loadNpmTasks('grunt-exec');
// 2. Note the use of the colon notation exec:ftpupload
grunt.registerTask('deploy', ['exec:ftpupload']);
};
注意强>
exec.ftpupload.command
的更改 - 它现在包含./
路径前缀,如您所述:
ftp.sh
文件与Gruntfile.js位于同一目录中。
deploy
任务中的别名任务列表现在使用分号表示法,即exec:ftpupload
如果选项1因任何原因失败,请使用grunt-shell代替 grunt-exec 。
运行:$ npm un -D grunt-exec
运行:$ npm i -D grunt-shell
grunt-shell 使用名为load-grunt-tasks的软件包,因此您还需要通过运行来安装它:$ npm i -D load-grunt-tasks
按如下方式配置Gruntfile.js
:
module.exports = function(grunt) {
grunt.initConfig( {
shell: {
ftpupload: {
command: './ftp.sh'
}
}
});
require('load-grunt-tasks')(grunt);
grunt.registerTask('deploy', ['shell:ftpupload']);
};