2016-11-08 1 views
3

각도 2 프로젝트에서 스 니펫 카트를 구현해야합니다. 아래의 스크립트 태그는 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는 보안을 위해 그것을 확인합니다.

런타임시이 작업을 시도했습니다 : src-url없이 script.html 파일을 index.html 파일에 추가 한 다음 main.ts에서 올바른 api-key 값과 src-url로 태그 속성을 업데이트하십시오 .

그런 식으로 snipcart가 올바른 키로 실행되지만 snipcart.com에서 유효성 검사가 실패합니다.

그래서 컴파일 타임에 api-key를 설정해야합니다. 내 index.html은 개발 및 제작 모드에서 달라야합니다.

내 프로젝트는 각 CLI 만들어집니다 :

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

감사합니다,

건배

게르트

+0

'그래서 저는 컴파일 타임에 API 키를 설정해야합니다. 내 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

당신은 당신의 응용 프로그램을 배포하기 전에 API 키를 삽입 할 꿀꺽를 사용할 수 있습니다. index2.html을 생성해야 배포시 좋은 api 키가있는 index.html 실제를 만드는 데 사용됩니다. index2.html에는 API 키가있는 곳의 SNIPCART_API_KEY을 입력합니다.

꿀꺽를 설치하고 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']); 

을 만들이 꿀꺽 파일이 package.json에있는 좋은 키를 사용하여 SNIPCART_API_KEY을 교체해야하고 index.html을 만들 수 있습니다.

필요한 경우 Gulp 작업을 호출하려면 package.json에 스크립트를 추가하십시오. 배포 프로세스에서 npm run prod으로 전화하여 프로덕션 키와 함께 index.html을 생성해야합니다.

또한 내가이 솔루션을 테스트하지 않았지만 메인 아이디어를 얻을해야 "start-dev":"gulp default && npm npm start"

같은 다른 스크립트를 만들 수

{ 
//... 
"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" } 
    } 
} 

package.json. ;)

더 편하게 생각한다면 편집 해 드리겠습니다. & 클리너.

+0

Perfect! 감사합니다 @rousseauo! 내가 필요한 것! – Zambiorix

+0

도움이 되니 기쁩니다! SnipCart를 즐길 수있을 것입니다.) 스크립트 태그로 페이지를로드 할 때가 아니라 앱 흐름에서 SnipCart (옵션 포함)를 부트 스트랩 할 수 있는지에 대해 창립자와 이야기했습니다. 이 작업이 완료 될 때까지 Gulp 설치가 잘된 것 같아요 :) – rousseauo

+1

언젠가 공식 2 패키지를 공개 할 수 있기를 바랍니다 ... 이미 Snipcart와 함께 일하는 것이 좋습니다 : 2) 요청 :-) Fastfring이하는 것처럼 디지털 이행 (라이센스 키, 다운로드 URL, ..) 통합을 좋아할 것입니다 ... 창업자를 알고 있습니까? – Zambiorix

관련 문제