管节点包进入gulp

时间:2014-09-29 18:55:33

标签: node.js gulp

我很好奇是否可以将节点包中的管道传输到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

1 个答案:

答案 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