2016-11-02 9 views
0

我正在使用Ionic框架和AngularJs來製作一個Web應用程序。現在,我有一堆我的應用程序與靜態信息,我想現在更新服務,以利用數據庫。我正在爲離子框架和角度數據庫查找最佳行動方案。我被告知Sqlite將是最好的選擇。如何添加基於git repo的插件到我的npm安裝中以獲得離子框架?

我結束了從我的搜索以下網站:https://www.thepolyglotdeveloper.com/2014/11/use-sqlite-instead-local-storage-ionic-framework/這是提到我運行:cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin.git

我第一次運行該命令的嘗試似乎更新了我的應用程序的平臺/目錄下的很多文件,我認爲這很奇怪。我不確定是否應該將它們添加到我的存儲庫中。

無論如何,我正在得到的問題是。我想在我的機器上運行一個npm安裝,並且一切都將很適合誰拉我的代碼。我如何擁有這個插件的git網站,所以當安裝運行時,它會運行這個文件。

編輯我不確定它是否像將URL添加到packages.json文件中的cordovaPlugins列表一樣簡單。我現在要去測試一下。

回答

2

無論何時添加插件,您都可以將--save標誌添加到cordova/ionic命令以將它們保存到您的package.json中。這樣當有人拉你的項目時,他們可以運行ionic state reset,這會導致離子從package.json文件安裝所有cordova插件。

+0

所以,這是否意味着我應該在我的package.json文件中添加''腳本「:{」postinstall「:」ionic state reset「},所以在我運行'npm install'後,它會自動運行狀態重置? – Fallenreaper

+0

如果您試圖僅使用'npm install'自動運行命令,那麼是的,您應該可以添加'「腳本」:{「postinstall」:「ionic state reset」}來實現這一點。 –

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" 
} 

,然後故宮後安裝完畢後,它會再運行設置腳本這將增加所有相應所需的平臺和插件。

相關問題