我想使用npm的twitter包,它recommends to use env variables,但setting it up on windows machines is horror,所以我想避免env變量。接下來的嘗試是保留外部json文件(like here in my repo)中的變量,這是永遠不會提交的,但是它與CI不兼容,因爲如果它不在回購中,我該如何使用它並進行測試,對吧?有沒有更好的方法將敏感數據傳遞給程序,替代env變量?
讓我表演。
ENV變量(Windows用戶噩夢):
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
});
不可測的廢話
var Twitter = require('twitter');
var keys = require('./keys.json');
var client = new Twitter(keys);
這條線在.gitignore
:
keys.json
沒有贏家情況;有沒有更好的辦法?
在這種情況下沒有贏家,這讓我很難過。 我想實現兩個簡單的目標:簡單的消費和可測試性。你能幫我嗎?你如何處理這個問題?
更新:我正在談論開發基於twitter API的開源庫,而不是最終用戶產品,我覺得在回購中保留令牌是不安全的。
更新2: Windows用戶擁有set
和setx
命令。歡呼! thx馬丁Konecny注意到這一點。
解決方案:上,但在Windows中設置了ENV變量沒有廢話,這是更好地讓消費者代碼選擇如何將數據傳遞給他的最終產品(這是用我的LIB)。所以我們結束了沒有「數據傳遞」問題的情況。因爲它是可測試的,因爲我可以在我的測試中使用env變量來在Travis CI中測試它。
我以類似的方式結束了,謝謝 –