我是电子新手。我正在构建一个使用全局安装的ffmpeg和sox的应用程序。如何保证这些依赖项将安装在用户计算机上?
答案 0 :(得分:0)
试试这个,它不是特定于电子,但可以提供帮助 http://12factor.net/dependencies
答案 1 :(得分:0)
可能存在两种系统级依赖关系:
对于基于NPM的程序包,您可以执行以下对等程序依赖:
{
....
"peerDependencies": {
"chai": "1.x"
}
....
}
对于非NPM包,通常的模式是在应用程序启动流程中检查这一点,并告知用户它是否不可用。
特别回答ffmpeg,以下内容应该有所帮助:
/**
* Check for ffmpeg availability
*
* If the FFMPEG_PATH environment variable is set, try to use it.
* If it is unset or incorrect, try to find ffmpeg in the PATH instead.
*
* @method FfmpegCommand#_getFfmpegPath
* @param {Function} callback callback with signature (err, path)
* @private
*/
proto._getFfmpegPath = function(callback) {
if ('ffmpegPath' in cache) {
return callback(null, cache.ffmpegPath);
}
async.waterfall([
// Try FFMPEG_PATH
function(cb) {
if (process.env.FFMPEG_PATH) {
fs.exists(process.env.FFMPEG_PATH, function(exists) {
if (exists) {
cb(null, process.env.FFMPEG_PATH);
} else {
cb(null, '');
}
});
} else {
cb(null, '');
}
},
// Search in the PATH
function(ffmpeg, cb) {
if (ffmpeg.length) {
return cb(null, ffmpeg);
}
utils.which('ffmpeg', function(err, ffmpeg) {
cb(err, ffmpeg);
});
}
], function(err, ffmpeg) {
if (err) {
callback(err);
} else {
callback(null, cache.ffmpegPath = (ffmpeg || ''));
}
});
};
以上代码为taken from here。 node-fluent-ffmpeg是一个很好的项目,可以在ffmpeg之上运行。我相信,这对您的项目来说是一个很好的参考。
答案 2 :(得分:0)
您可以使用您的应用程序打包依赖项的不同安装程序,然后为您的应用程序创建一个自定义安装程序,该安装程序也会按顺序启动依赖项安装程序,或者只是提示用户自己安装依赖项并将它们链接到下载页面。
有很多资源可用于创建安装程序,请针对您的特定平台尝试谷歌搜索electron installer
。
答案 3 :(得分:0)
抱歉,我迟到了,但为了以防这仍然相关 - 我已经专门为此创建了ffbinaries
模块。
您可以在npm上查看它,它只需在应用程序启动期间在用户计算机上下载二进制文件,该平台将自动检测到(如果您计划将其包括在内,您可以覆盖它)某种CI。)