2013-05-21 15 views
7

Bối cảnh: một xương sống ứng dụng duy nhất-page xây dựng với yeomanXử lý cấu hình môi trường cụ thể trong một ứng dụng javascript

Tôi muốn một cách để có một số thông số ứng dụng phụ thuộc vào môi trường hiện tại của tôi (dev vs sản xuất).

Ngay bây giờ tôi đang sử dụng hai tập tin cấu hình riêng biệt, và tôi chuyển đổi các dev một đến sản một khi triển khai mà grunt: nhiệm vụ usemin:

// index.html 
<!-- build:js scripts/config.prod.js --> 
<script src="scripts/config.dev.js"></script> 
<!-- endbuild -->  

// config.dev.js 
window.config = { 
    api_host: 'localhost:9393', 
    api_key: 'dev_api_key' 
} 

// config.prod.js 
window.config = { 
    api_host = 'api.host.tld', 
    api_key = 'prod_api_key' 
} 

giải pháp này hoạt động nhưng là mùi và không cho phép bất kỳ môi trường nào khác ngoài sản xuất và phát triển. Lựa chọn thay thế của tôi là gì?

+1

Bạn có thể thử xử lý trước tệp HTML của mình và thay thế trình giữ chỗ – gustavohenke

+0

có thể trùng lặp của [Biến môi trường NodeJS trong Grunt] (http://stackoverflow.com/questions/15554215/nodejs-environment-variables-in-grunt) –

+0

Dưới đây là một câu trả lời chi tiết cho Yeoman: https://stackoverflow.com/questions/20742882/how-set-get-environment-specific-variable-in-a-yeoman-ember-app/20974746#20974746 – borisrorsvort

Trả lời

1

Hãy thử điều này:

var DEV = (window.location.indexOf("DEV=1")) != -1 ? true : false; 

Sau đó gõ ?DEV=1 sau URL của bạn.

+2

Điều đó có thể làm nhưng tôi 'd thay vì không có ứng dụng dev của tôi được triển khai trong sản xuất ... – MrRuru