我很好奇是否可以将节点包中的管道传输到gulp流以便将其传递到目的地。
对于这个特定的例子,我试图将plist
节点包的输出传递给文件。我意识到我可以使用fs
包来做到这一点,但没有咕噜咕噜,而是试图保持一致。如果我需要管道其他插件输出,也将有助于知道将来使用。
我收到错误 TypeError: Object <?xml ...> has no method 'on'
这是我的任务:
var gulp = require('gulp'),
plist = require('plist')
;
gulp.src('./')
.pipe(plist.build(iosPlist))
.pipe(gulp.dest("ios.plist"))
;
如果需要,可以链接到包:https://www.npmjs.org/package/plist
答案 0 :(得分:0)
当我想用另一个文件中的值修改plist文件时,我遇到了类似的问题。
例如,假设我们有像:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>aaa</string>
</dict>
</plist>
使用gulp-tap
插件,可以修改给定管道中文件的内容。
实际示例代码(coffeescript):
gulp = require 'gulp'
plist = require 'plist'
tap = require 'gulp-tap'
gulp.task 'plist', ->
gulp.src("./test.plist")
.pipe(tap((file)->
src_file = plist.parse(file.contents.toString())
src_file['name'] = 'new_name' if src_file['name']?
dest_file = plist.build(src_file)
file.contents = new Buffer(dest_file)
))
.pipe(gulp.dest("./tmp")))
检查它是否真的适用于diff -u test.plist tmp/test.plist
--- test.plist 2014-11-09 14:49:50.000000000 +0900
+++ tmp/test.plist 2014-11-09 14:53:38.000000000 +0900
@@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>name</key>
- <string>aaa</string>
+ <string>new_name</string>
</dict>
-</plist>
+</plist>
\ No newline at end of file