2016-01-09 22 views
6

Tôi có một ứng dụng kiễu góc với các tập tin đơn giản cấu hình sau config.js:ứng dụng kiễu góc với Webpack cho dev và sản xuất xây dựng

export default function(app) { 
    app.constant('config', {apiUrl: 'https://localhost:8080'}); 
}; 

được nhập khẩu bởi Webpack nhập điểm app.js:

import config from './config'; 
config(app); 

Tôi muốn có một khác nhau apiUrl khi tôi xây dựng sản xuất.

Cách dễ nhất để thực hiện điều đó trong Webpack là gì?

+1

Tôi không có câu trả lời chính xác vì tôi không sử dụng webpack. Tôi đang mắc kẹt bằng cách sử dụng gói ASP.NET vào lúc này, nhưng cách chúng ta đạt được điều tương tự (đối với điểm cuối API) là gộp một tệp khác xác định cùng một hằng số (các giá trị khác nhau), tùy thuộc vào môi trường đích của chúng tôi, ví dụ: sản xuất -> prod/config.js; uat -> uat/config.js. – natwallbank

+0

Vâng, đây là một trong các tùy chọn, trước khi tôi quyết định có một tệp với 'switch' trên' location.hostname' – krl

+0

Kiểm tra giải pháp của tôi trên Github, tôi không thể tin rằng khó có thể tìm thấy một cách đơn giản giải pháp cho việc chuyển cấu hình từ webpack cmd sang Angular2 Typescript, giải pháp của tôi rất đơn giản, https://github.com/Sweetog/yet-another-angular2-boilerplate –

Trả lời

0

Có một câu hỏi tương tự trên https://stackoverflow.com/a/34032050/1610981

Nó liên quan bạn có thể sử dụng http://webpack.github.io/docs/list-of-plugins.html#defineplugin

File config.js sẽ là:

export default function(app) { 
    app.constant('config', {apiUrl: API_URL}); 
}; 

Và bên trong các tập tin cấu hình webpack:

plugins:[ 
    new webpack.DefinePlugin({ 
    API_URL: JSON.stringify('https://localhost:8080') 
    }) 
] 

Bạn nên có hai webpa ck configs, một cho develoment và một cho sản xuất. Mỗi một định nghĩa macro API_URL, theo thực hiện được xây dựng.

+0

Tôi cũng có một số bản dựng sản phẩm để dàn dựng. Làm thế nào để giải quyết nó bằng cách sử dụng phương pháp tiếp cận được đề xuất? – krl

1

tôi khuyên bạn nên sử dụng biến môi trường với webpack.DefinePlugin

//webpack.config.js 
... 

let API_URL; 
if (process.env.NODE_ENV == 'development') { 
    API_URL = 'https://dev:8080'; 
} else { 
    API_URL = 'https://prod:8080'; 
} 

// or 

const API_URL = process.env.API_URL; 

... 

plugins:[ 
    new webpack.DefinePlugin({API_URL: API_URL}) 
] 
... 

Nếu NODE_ENV không setuped sử dụng export NODE_ENV=development cho Linux/OSX hoặc SET NODE_ENV=development cho các cửa sổ.

Các vấn đề liên quan