2013-03-21 46 views
25

Tôi đang chuyển dự án của mình chỉ đơn giản là node server.js thành sử dụng Grunt.Biến môi trường NodeJS trong Grunt

Tôi đã sử dụng để chạy ứng dụng của mình trực tiếp từ webstorm và các biến môi trường sẽ được thiết lập cho tôi.

Làm cách nào để đạt được điều tương tự trong Grunt?

tôi cần phải hoặc là chạy grunt từ webstorm (cửa sổ), hoặc thiết lập env VAR khi chạy grunt (rõ ràng)

Đây không phải là một vấn đề khi triển khai vì Heroku đã chăm sóc thiết env tôi vars.

Trả lời

47

sử dụng plugin grunt-env: https://npmjs.org/package/grunt-env

và thiết lập cấu hình của bạn:

grunt.initConfig({ 
    env : { 
    options : { 
     //Shared Options Hash 
    }, 
    dev : { 
     NODE_ENV : 'development', 
     DEST  : 'temp' 
    } 
    }, 
    'another-task': {} 
}); 

trong gruntfile của bạn, bạn có thể sẽ xác định một số mặc định-nhiệm vụ:

grunt.registerTask('default', ['env', 'another-task']); 

vì vậy nếu bạn chạy 'grunt default' lúc đầu env-vars của bạn được đặt, và sau đó 'another-task' được chạy

nếu bạn muốn xác định môi trường hiện tại thông qua tùy chọn dòng lệnh bạn có thể sử dụng grunt.option:

grunt.initConfig({ 
    env : { 
    options : { 
     //Shared Options Hash 
    }, 
    dev : { 
     NODE_ENV : grunt.option('environment') || 'development', 
     DEST  : 'temp' 
    } 
    }, 

trong ví dụ này nếu bạn gọi nhiệm vụ grunt của bạn với --environment=production sản xuất sẽ được thiết lập, nếu không phát triển sẽ được thiết lập

+0

Nếu bạn cần truy cập vào biến env trong ứng dụng js (như Ember), bạn có thể sử dụng mẫu đó https://stackoverflow.com/questions/20742882/how-set-get-environment-specific-variable-in -a-yeoman-ember-app/20974746 # 20974746 – borisrorsvort

+1

Đã bỏ phiếu quá sớm và nhận ra quá muộn để giảm giá đúng cách. Không hoạt động trong Windows (cmd hoặc ps). – rainabba

+0

thư viện mở rộng process.env với dữ liệu cấu hình của bạn. im không quen thuộc với node.js trên windows, nhưng tôi không thấy lý do nào tại sao nó không hoạt động ... – hereandnow78