documentation之后,我能够设置grunt任务并成功构建。
现在,我需要具有preInstall和postInstall脚本,但是找不到有关如何执行此操作的任何文档。

这是我的设置:

rpm: {
            options: {
                // Task-specific options go here.
                name: 'cdrapi',
                version: '1.0.0',
                release: false,
                homepage: 'www.website.com',
                summary: 'api package',
                license: '??',
                distribution: 'CentOS 6.x',
                requires: ['nodejs'],
                preInstall: 'echo "You are in the pre install section"'
            },
            files: {
                dest: '/opt/cdr/api/',
                src: ['**/*', '!**/*.map', '!**/**/*.ts', '!**/bdd_tests/**'],
                cwd: 'build',
                expand: true
            }
        }


上面的preInstall标记不执行任何操作,甚至不会反映在rpm规范文件中。

最佳答案

看起来preInstallpostInstall的参数应该是文件而不是嵌入式脚本。

参见代码here

src += readScriptlet('\n%pre', options.preInstall);
src += readScriptlet('\n%post', options.postInstall);
src += readScriptlet('\n%preun', options.preUninstall);
src += readScriptlet('\n%postun', options.postUninstall);


readScriptlet函数:

function readScriptlet(label, scriptFile) {
    var src = '';
    if (scriptFile) {
        var options = {
            encoding: scriptFile.encoding || 'utf8'
        };
        var data = fs.readFileSync(scriptFile.src, options);
        src += label + '\n';
        src += data.trim() + '\n\n';
    }
    return src;
}

09-04 14:00