2014-01-15 86 views
2

我使用grunt-template和我讀一個文件,這樣的說法:咕嚕讀取替代文件模板

<%= grunt.file.read("someFile.js") %> 

現在我需要做一些文本替換在someFile.js。我怎樣才能以一種理智的方式實現這一目標?我可以爲此定義一個自己的函數嗎?

回答

0

grunt.template將全部從<%=替換爲%>。 因此使用<%= grunt.file.read("someFile.js") %>模板將替換所有文件內容。 最好通過node.js通過fs.readFileSync讀取文件同步,替換它中的內容並使用writeFileSync保存更改。

+0

是不是'grunt.file.read'已經同步?我猜是這樣。我發現'grunt.file.read('file.js')。replace('foo','bar')'在模板語法內工作,但這不是一個真正的解決方案,因爲我沒有想用這個污染我的模板。 –

0

它可能不是你在尋找什麼,但你可以做到這一點使用步兵預處理:

https://github.com/jsoverson/grunt-preprocess

在這種情況下:

var configValue = '/* @echo FOO */'; 

/* @echo FOO * /將被替換爲在Gruntfile中定義的FOO值。

+0

我對此有點困惑,應該如何將它應用於我的用例? –

+0

也許它不適合你的用例,但是你把/ * @echo */vars放到你想要修改它的JS文件中(例如,針對不同的服務器環境),並用適當的變量替換咕嚕的任務 – imcg

+0

啊,我現在看到了,不幸的是我不能用這種方式。不管怎麼說,還是要謝謝你 –