2016-11-08 9 views
3

のための私は、角2プロジェクトにsnipcartを実装する必要があります。 以下のスクリプトタグは、私のindex.htmlファイルの先頭に挿入する必要があります。角度2のindex.html - 異なる開発・生産

ただし、data-api-keyは開発環境と本番環境で異なります。どのようにすればいいですか?

<script src="https://cdn.snipcart.com/scripts/2.0/snipcart.js" 
     id="snipcart" 
     data-api-key="insert-your-key-here"> 
</script> 

スクリプトタグは、index.htmlファイルで利用可能であることが重要である、snipcart.comはセキュリティ上の目的のためにそれをチェックします。

私は、実行時にこれを実行しようとしている: index.htmlファイルにSRC-urlにせずにスクリプトタグを追加してからmain.tsにタグが正しいAPIキー値とSRC-URLと属性を更新。

このようにsnipcartは正しいキーで実行されますが、snipcart.comからの検証は失敗します。

コンパイル時にapi-keyを設定する必要があります。私のindex.htmlは開発と生産モードで異なる必要があります。

"angular-cli": "1.0.0-beta.19-3", 

"@angular/common": "~2.1.0", 
"@angular/compiler": "~2.1.0", 
"@angular/core": "~2.1.0", 
"@angular/forms": "~2.1.0", 
"@angular/http": "~2.1.0", 
"@angular/platform-browser": "~2.1.0", 
"@angular/platform-browser-dynamic": "~2.1.0", 
"@angular/router": "~3.1.0", 

おかげで、あなたはあなたのアプリケーションを展開する前に、あなたのAPIキーを挿入するためにがぶ飲みを使用することができ

乾杯

ゲルト

+0

'だから私は、コンパイル時にAPIキーを設定する必要があります。私はあなたがこの結論に来てどのように従うことができませんでしたmode.'私のindex.htmlには、開発・生産における異なることが必要です。 –

+0

スニペット。comは私のウェブサイトを読み込んでスクリプトタグの存在を確認します(src、id、data-api-key属性の検証を含む)。 main.tsのスクリプトタグを更新すると、その検証は失敗します。だから、最初から正しいapi-keyを設定する必要があります。つまり、実行時ではありません。... – Zambiorix

+0

あなたのテンプレートをindex.htmlにテンプレート化しようとしましたか?設定値をテンプレートに渡すことができるので、index.htmlはこれらの値に基づいて生成されます。たとえば、これは不平等なhttps://www.npmjs.com/package/grunt-mustache-renderのためです – asotog

答えて

7

私のプロジェクトは、角度CLIを使用して作成されます。 展開時に適切なapiキーを使用してindex.htmlを実際に作成するために使用されるindex2.htmlを作成する必要があります。 index2.htmlで は、APIキーがあることshoud SNIPCART_API_KEYを置きます。

このガルプファイルは、あなたのpackage.jsonで見つかっ良いキーでSNIPCART_API_KEYを交換し、index.htmlを作成する必要がありますがぶ飲みをインストールし、gulpfile.js

var gulp = require('gulp'); 
var package = require('./package.json'); 
var replace = require('gulp-replace'); 
var argv = require('yargs').argv; 
var gulpif = require('gulp-if'); 
var rename = require('gulp-rename'); 

gulp.task('snipcart', function() { 
    gulp.src(['index2.html']) 
    .pipe(gulpif(argv.production, replace("SNIPCART_API_KEY", package.config.prod.snipcart_api_key))) 
    .pipe(gulpif(!argv.production, replace("SNIPCART_API_KEY", package.config.dev.snipcart_api_key))) 
    .pipe(rename('index.html')) 
    .pipe(gulp.dest('.'')) 
}); 

gulp.task('default', ['snipcart']); 

を作成します。

必要に応じてGulpタスクを呼び出すには、package.jsonにスクリプトを追加できます。 あなたはそれが生産キーでのindex.htmlが作成されますので、あなたの展開プロセスでnpm run prodを呼び出す必要があります。

package.json

{ 
//... 
"scripts": { 
    "start": "concurrently \"npm run tsc:w\" \"npm run lite\" ", 
    "prod": "gulp default --production", 
    "dev": "gulp default" 
    //... 
    } 
//... 
    "config" : { 
    "dev": { "snipcart_api_key" : "YOUR_KEY" }, 
    "prod": { "snipcart_api_key" : "YOUR_KEY" } 
    } 
} 

また、私はこのソリューションをテストしていないが、あなたがメインのアイデアを得る必要があります"start-dev":"gulp default && npm npm start"

のような他のスクリプトを作成することができます。 ;)

私は何か簡単に考えると編集します&クリーナー。

+0

パーフェクト!おかげで@ウルセアウォ!ちょうど私が必要なもの! – Zambiorix

+0

うれしい!私はSnipCartを楽しむだろうと確信しています;)スクリプトタグを使ってページを読み込むのではなく、アプリケーションの流れにしたいときにSnipCart(オプション付き)をブートストラップすることについて、創始者に話しました。これが完了するまで、Gulpのセットアップはうまくいきます:) – rousseauo

+1

うまくいけば、彼らは公式の角2パッケージを1日リリースします...私は既にSnipcartで働くのが大好きです:-) 2ページのリストは、リクエスト:-) FastSpringと同じように、デジタル履行(ライセンスキー、ダウンロードURL、..)統合が大好きです...創業者を知っていますか? – Zambiorix

関連する問題