Cordova 如何在从 repo 签出项目后安装缺少的插件?
Cordova how to install missing plugins after checkout project from repo?
我刚刚克隆了 cordova 应用程序的存储库,但在 .gitignore 文件中添加了目录 /plugins。
如何安装这些缺失的插件?你试图找到任何保存使用过的插件的配置文件,但没有成功。
非常感谢您的任何建议。
如果您添加了 add_plugin 并删除了插件挂钩,您的 package.json 应该有一个 cordovaPlugins 列表。
如果是,那么,我使用的解决方案是删除平台并重新添加它以获取所有插件
cordova platform remove android
cordova platform add android
这是需要的钩子
hooks/after_plugin_add/010_register_plugin.js
#!/usr/bin/env node
/**
* Push plugins to cordovaPlugins array after_plugin_add
*/
var fs = require('fs');
var packageJSON = require('../../package.json');
packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
process.env.CORDOVA_PLUGINS.split(',').forEach(function (plugin) {
if(packageJSON.cordovaPlugins.indexOf(plugin) == -1) {
packageJSON.cordovaPlugins.push(plugin);
}
});
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2));
hooks/after_plugin_rm/010_deregister_plugin.js
#!/usr/bin/env node
/**
* Remove plugins from cordovaPlugins array after_plugin_rm
*/
var fs = require('fs');
var packageJSON = require('../../package.json');
packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
process.env.CORDOVA_PLUGINS.split(',').forEach(function (plugin) {
var index = packageJSON.cordovaPlugins.indexOf(plugin);
if (index > -1) {
packageJSON.cordovaPlugins.splice(index, 1);
}
});
fs.writeFile('package.json', JSON.stringify(packageJSON, null, 2));
hooks/after_platform_add/010_install_plugins.js
#!/usr/bin/env node
/**
* Install all plugins listed in package.json
* https://raw.githubusercontent.com/diegonetto/generator-ionic/master/templates/hooks/after_platform_add/install_plugins.js
*/
var exec = require('child_process').exec;
var path = require('path');
var sys = require('sys');
var packageJSON = require('../../package.json');
var cmd = process.platform === 'win32' ? 'cordova.cmd' : 'cordova';
// var script = path.resolve(__dirname, '../../node_modules/cordova/bin', cmd);
packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
packageJSON.cordovaPlugins.forEach(function (plugin) {
exec('cordova plugin add ' + plugin, function (error, stdout, stderr) {
sys.puts(stdout);
});
});
另一个解决方案是添加一个插件安装任务,如本页所述:
http://jbavari.github.io/blog/2014/06/24/managing-cordova-plugins-with-package-dot-json-and-hooks/
您可以使用ionic state
来管理插件和平台。
https://github.com/driftyco/ionic-cli#ionic-state
阅读package.json并安装列出的插件/平台:
ionic state restore
将当前插件/平台保存到 package.json :
ionic state save
删除所有内容! (包括默认的 Ionic 插件...):
ionic state clear
删除所有内容并带回您在 package.json 中指定的内容:
ionic state reset
cordova prepare
似乎对我有用。克隆我的存储库后,我在 运行 宁 cordova requirements
时收到 "No platforms added to this project" 错误,即使平台已在 config.xml 中列出。 运行 cordova prepare
填写插件目录,允许cordova requirements
到运行。
您可以使用
ionic cordova prepare <platform>
它将为您提供未安装的插件列表并显示错误消息。
我刚刚克隆了 cordova 应用程序的存储库,但在 .gitignore 文件中添加了目录 /plugins。
如何安装这些缺失的插件?你试图找到任何保存使用过的插件的配置文件,但没有成功。
非常感谢您的任何建议。
如果您添加了 add_plugin 并删除了插件挂钩,您的 package.json 应该有一个 cordovaPlugins 列表。
如果是,那么,我使用的解决方案是删除平台并重新添加它以获取所有插件
cordova platform remove android
cordova platform add android
这是需要的钩子
hooks/after_plugin_add/010_register_plugin.js
#!/usr/bin/env node
/**
* Push plugins to cordovaPlugins array after_plugin_add
*/
var fs = require('fs');
var packageJSON = require('../../package.json');
packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
process.env.CORDOVA_PLUGINS.split(',').forEach(function (plugin) {
if(packageJSON.cordovaPlugins.indexOf(plugin) == -1) {
packageJSON.cordovaPlugins.push(plugin);
}
});
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2));
hooks/after_plugin_rm/010_deregister_plugin.js
#!/usr/bin/env node
/**
* Remove plugins from cordovaPlugins array after_plugin_rm
*/
var fs = require('fs');
var packageJSON = require('../../package.json');
packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
process.env.CORDOVA_PLUGINS.split(',').forEach(function (plugin) {
var index = packageJSON.cordovaPlugins.indexOf(plugin);
if (index > -1) {
packageJSON.cordovaPlugins.splice(index, 1);
}
});
fs.writeFile('package.json', JSON.stringify(packageJSON, null, 2));
hooks/after_platform_add/010_install_plugins.js
#!/usr/bin/env node
/**
* Install all plugins listed in package.json
* https://raw.githubusercontent.com/diegonetto/generator-ionic/master/templates/hooks/after_platform_add/install_plugins.js
*/
var exec = require('child_process').exec;
var path = require('path');
var sys = require('sys');
var packageJSON = require('../../package.json');
var cmd = process.platform === 'win32' ? 'cordova.cmd' : 'cordova';
// var script = path.resolve(__dirname, '../../node_modules/cordova/bin', cmd);
packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
packageJSON.cordovaPlugins.forEach(function (plugin) {
exec('cordova plugin add ' + plugin, function (error, stdout, stderr) {
sys.puts(stdout);
});
});
另一个解决方案是添加一个插件安装任务,如本页所述: http://jbavari.github.io/blog/2014/06/24/managing-cordova-plugins-with-package-dot-json-and-hooks/
您可以使用ionic state
来管理插件和平台。
https://github.com/driftyco/ionic-cli#ionic-state
阅读package.json并安装列出的插件/平台:
ionic state restore
将当前插件/平台保存到 package.json :
ionic state save
删除所有内容! (包括默认的 Ionic 插件...):
ionic state clear
删除所有内容并带回您在 package.json 中指定的内容:
ionic state reset
cordova prepare
似乎对我有用。克隆我的存储库后,我在 运行 宁 cordova requirements
时收到 "No platforms added to this project" 错误,即使平台已在 config.xml 中列出。 运行 cordova prepare
填写插件目录,允许cordova requirements
到运行。
您可以使用
ionic cordova prepare <platform>
它将为您提供未安装的插件列表并显示错误消息。