2017-01-27 15 views
1

私はアプリケーションをビルドするときにバージョン変数を編集しようとしていますが、コードホイールフックを使ってスクリプトを実行することはできません。フック経由でビルド時に値を編集する

git commitのpackage.jsonと最後の5桁からバージョンを取得したいので、私のバージョンとして1.0.0.89gktのようなものを持つことができます。

これまでionic 1の場合、gruntやgulpを使用して、スクリプトを簡単にビルドプロセスに追加することができました。

私はhooks/hook_name/script形式を使用し、config.xmlでフックタグを使用していて、どちらもどちらもうまく動作しませんでした。

package.jsonでイオンスクリプトを上書きすると、自動的に実行されるスクリプトを変更できますが、できればそれを避けたいと思います。コピースクリプトや何かのものにテキストを簡単に入れ替えることはできますが(どちらが最善のものか分かりません)

フックが火を消す理由については誰かがより良い方法や理由を知っている場合は、私は知っている。

+0

あなたが望むものは100%ではありませんが、見ることができますhttp://www.bilyachat.com/2017/01/angular-2-build-version.html –

+0

ありがとう@VolodymyrBilyachat、私はそれを実際に見て、それを与えるでしょうしかし、ビルドコールを行う前に新しいスクリプトを追加するのではなく、標準のビルドフローに追加することができればそれを好むでしょう。 (例えば、私は 'ionic serve'や' ionic build'と呼ぶ必要があり、必要に応じてスクリプトを実行します) –

答えて

3

これは私が使い終わった解決策です。

スクリプト/ before_prepare_increment_build_number.js

var fs = require('fs'); 
var git = require('git-rev-sync') 

console.log('Incrementing Build Number'); 


var file = fs.readFileSync('www/build/main.js', 'utf8'); 

var str = git.short(); 

console.log('short', str) 

var result = file.replace(/{{GITVERSIONSTRING}}/g, str); 

fs.writeFileSync('www/build/main.js', result); 

console.log('Incrementing Build Number Completed'); 

config.xmlの

<hook src="scripts/before_prepare_increment_build_number.js" type="before_prepare"/>

は、私はそのすべてが起こっていたことを確認するために必要な文字列があった前に同期しそうでない場合は、コピーを開始するスクリプトで構築されました置き換えられました。

現在、デフォルトのionic-app-scriptsによって生成されたmain.js全体を対象としているため、必要に応じてすべての比較や置換を追加できます。 このソリューションは、もう少し効率的にするために使用することができコルドバフックに建てbefore_prepare

別の解決策は、package.jsonでスクリプトを果たす/必要に応じて個々のファイルをターゲットにしてビルドする前にスクリプトを追加して使用し、 npmを制御して管理します。

+0

package.jsonでこれを行う別の方法を投稿できますか?単にバージョン番号の文字列置換私のアプリのインデックスファイルにあります。ありがとう –

関連する問題