在我的 Node.js 应用程序中,我使用 pam 身份验证,并且我使用的模块需要安装 libpam-dev(或 pam-devel),否则将无法编译。它生成的错误消息对用户不是很友好,而且很多人不会费心阅读文档。
我想使用 NPM 中的 preinstall 钩子来检查标头是否可用,如果没有,则显示一个友好的错误,然后在 NPM 尝试安装模块之前终止它。
我知道如何杀死 NPM,只是不知道如何检查 pam 标头是否可用。解决方案应该与发行版无关。
我最终这样做了:
包.json:
{
"scripts": {
"preinstall": "./bin/install_check.sh"
}
}
bin/install_check.sh:
#!/bin/bash
if [ `echo '#include <security/pam_appl.h>' | cpp -H -o /dev/null 2>&1 | head -n1 | grep 'fatal error' | wc -l` == "1" ]; then
echo "nodeftpd: Please install the libpam-dev package";
exit 1;
fi
我无法弄清楚如何避免需要单独的脚本。