Cordova如何从repo结账项目后安装缺少的插件?

red*_*rom 5 cordova ionic-framework cordova-plugins

我刚刚克隆了cordova应用程序的存储库,但在.gitignore文件中添加了dir/plugins.

我该如何安装这些丢失的插件?你试图找到保存使用过的插件的任何配置文件,但没有运气.

非常感谢任何建议.

TeC*_*n4K 13

您可以使用它ionic state来管理插件和平台.

https://github.com/driftyco/ionic-cli#ionic-state


阅读package.json并安装列出的插件/平台:

ionic state restore
Run Code Online (Sandbox Code Playgroud)

将当前插件/平台保存到package.json:

ionic state save
Run Code Online (Sandbox Code Playgroud)

删除一切!(包括默认的Ionic插件......):

ionic state clear
Run Code Online (Sandbox Code Playgroud)

删除所有内容并将您在package.json中指定的内容带回来:

ionic state reset
Run Code Online (Sandbox Code Playgroud)


Mat*_*inn 5

cordova prepare似乎对我有用。克隆我的存储库后,我在运行时收到“没有平台添加到此项目”错误cordova requirements,即使平台已在 config.xml 中列出。运行cordova prepare填写插件目录,允许cordova requirements运行。


aor*_*vre 1

如果您添加了 add_plugin 和删除插件挂钩,您的 package.json 将有一个 cordovaPlugins 列表。

如果是,那么我使用的解决方案是删除平台并再次添加它以获取所有插件

cordova platform remove android
cordova platform add android
Run Code Online (Sandbox Code Playgroud)

这是所需的钩子

钩子/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));
Run Code Online (Sandbox Code Playgroud)

钩子/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));
Run Code Online (Sandbox Code Playgroud)

钩子/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);
  });
});
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是添加插件安装任务,如本页所述: http://jbavari.github.io/blog/2014/06/24/managing-cordova-plugins-with-package-dot-json-and -挂钩/