grunt exec 冻结,期待来自 django collectstatic 的 0 状态代码
grunt exec freezes, expecting 0 status code from django collectstatic
我试图让 grunt exec
在构建静态后执行 django
collectstatic
命令。所以,在我的 Gruntfile.js 中我有:
grunt.initConfig({
...
exec: {
collectstatic: {
cwd: '../../',
cmd: 'python manage.py collectstatic --clear'
}
}
...
}
当我尝试使用 grunt exec:collectstatic --verbose
执行此命令时,它没有诅咒但冻结并显示以下输出:
Running "exec:collectstatic" (exec) task
Verifying property exec.collectstatic exists in config...OK
File: [no files]
python manage.py collectstatic --clear
Expecting exit code 0
看起来好像没有收到来自 django
的退出代码。我检查过,如果 django returns 正确的状态代码,它似乎是这样做的:
$ python manage.py collectstatic --clear
$ echo $?
0
怎么了?
默认情况下,django 的 collectstatic 命令需要用户输入(确认确实应该收集静态文件),但 grunt 无法将用户的输入传递到 collectstatic 命令。这将导致冻结,因为 collectstatic 需要输入一些东西,但 grunt 没有提供任何东西。
可以通过在 collectstatic 命令中添加 --noinput
参数来更改,因此整个命令将如下所示:
python manage.py collectstatic --clear --noinput
这将解决您的问题。
我试图让 grunt exec
在构建静态后执行 django
collectstatic
命令。所以,在我的 Gruntfile.js 中我有:
grunt.initConfig({
...
exec: {
collectstatic: {
cwd: '../../',
cmd: 'python manage.py collectstatic --clear'
}
}
...
}
当我尝试使用 grunt exec:collectstatic --verbose
执行此命令时,它没有诅咒但冻结并显示以下输出:
Running "exec:collectstatic" (exec) task
Verifying property exec.collectstatic exists in config...OK
File: [no files]
python manage.py collectstatic --clear
Expecting exit code 0
看起来好像没有收到来自 django
的退出代码。我检查过,如果 django returns 正确的状态代码,它似乎是这样做的:
$ python manage.py collectstatic --clear
$ echo $?
0
怎么了?
默认情况下,django 的 collectstatic 命令需要用户输入(确认确实应该收集静态文件),但 grunt 无法将用户的输入传递到 collectstatic 命令。这将导致冻结,因为 collectstatic 需要输入一些东西,但 grunt 没有提供任何东西。
可以通过在 collectstatic 命令中添加 --noinput
参数来更改,因此整个命令将如下所示:
python manage.py collectstatic --clear --noinput
这将解决您的问题。