如何在我的npm安装离子框架中添加基于git repo的插件?

时间:2016-11-02 01:55:34

标签: angularjs git cordova ionic-framework

我正在使用带有AngularJs的Ionic Framework来创建一个Web应用程序。现在我有一堆我的应用程序与静态信息,我想现在更新服务以利用数据库。我正在寻找具有离子框架和角度的数据库的最佳行动方案。有人告诉我,Sqlite是最好的选择。

我最终访问了以下网站:https://www.thepolyglotdeveloper.com/2014/11/use-sqlite-instead-local-storage-ionic-framework/我提到要运行cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin.git

我第一次尝试运行该命令似乎更新了我的应用程序的 platforms / 目录下的很多文件,我觉得这很奇怪。我不确定我是否应该将它们添加到我的存储库中。

无论如何,我得到的问题是。我想在我的机器上运行一个npm安装,无论谁拉我的代码,一切都会好的。我怎么会有这个插件git网站所以当安装运行时,它将运行这个文件。

编辑我不确定是否就像将这个URL添加到packages.json文件中的cordovaPlugins列表一样简单。我现在要测试一下。

2 个答案:

答案 0 :(得分:2)

无论何时添加插件,都可以将--save标志添加到cordova / ionic命令中,以将它们保存到package.json中。这样当有人拉入你的项目时,他们可以运行ionic state reset,这会导致ionic从package.json文件中安装所有的cordova插件。

答案 1 :(得分:0)

我不确定这是不是最好的方法,但我做的是:

scripts/setup.js中创建了一个脚本文件,其中包含以下代码。

#!/usr/bin/env node

//This script will add or remove all plugins listed in package.json
//usage: node platforms.js [add | remove]

var command = process.argv[2] || 'add';
var packageJson = require('../package.json');

var fs = require('fs');
var path = require('path');
var sys = require('sys')
var exec = require('child_process').exec;

packageJson.cordovaPlatforms.forEach(function(platform) {
  var platformCmd = 'cordova platform ' + command + ' ' + platform;
  exec(platformCmd);
});


//Set up Plugins.
var command = process.argv[2] || 'add';

var packageJson = require('../package.json');

var fs = require('fs');
var path = require('path');
var sys = require('sys')
var exec = require('child_process').exec;

function createAddRemoveStatement(plugin) {
  var pluginCmd = 'cordova plugin ' + command + ' ';
  if(typeof plugin === 'string') {
    pluginCmd += plugin;
  } else {
    if(command === 'add') {
      pluginCmd += plugin.locator + ' ';
      if(plugin.variables) {
        Object.keys(plugin.variables).forEach(function(variable){
          pluginCmd += '--variable ' + variable + '="' + plugin.variables[variable] + '" ';
        });
      }
    } else {
      pluginCmd += plugin.id;
    }
  }

  return pluginCmd;
}

function processPlugin(index) {
  if(index >= packageJson.cordovaPlugins.length)
    return;

  var plugin = packageJson.cordovaPlugins[index];
  var pluginCommand = createAddRemoveStatement(plugin);
  console.log(pluginCommand);
  exec(pluginCommand, function(){
    processPlugin(index + 1);
  });
}

processPlugin(0);

然后,此文件将检查cordovaPlatforms部分和cordovaPlugins部分,以查找需要添加的内容,然后添加它们。

然后我进入 packages.json 并添加:

"scripts": {
  "postinstall":"node scripts/setup.js"
}

然后在npm安装完成后,它将运行设置脚本,相应地添加所有必需的平台和插件。