在Node.js中复制到剪贴板?

有没有办法可以在Node.js中复制到剪贴板? 任何模块或想法是如此之久? 我在桌面应用程序上使用Node.js。 希望这清楚了为什么我希望它能够实现这一点。

剪贴板不是操作系统固有的。 它是操作系统正在运行的任何窗口系统的构造。 所以,如果你想这个在X上工作,你需要绑定到Xlib和/或XCB。 Xlib绑定节点实际上存在: https : //github.com/mixu/nwm 。 虽然我不确定它是否允许您访问X剪贴板,但最终可能会编写自己的剪贴板。 你需要单独的窗口绑定。

编辑:如果你想做一些hacky,你也可以使用xclip:

var exec = require('child_process').exec; var getClipboard = function(func) { exec('/usr/bin/xclip -o -selection clipboard', function(err, stdout, stderr) { if (err || stderr) return func(err || new Error(stderr)); func(null, stdout); }); }; getClipboard(function(err, text) { if (err) throw err; console.log(text); }); 

对于OS X:

 function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); } 

write()可以带一个缓冲区或一个string。 string的默认编码将是utf-8。

这是一个提供copypastefunction的模块: https : //github.com/xavi-/node-copy-paste

require("copy-paste").global()被执行时,添加两个全局函数:

 > copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello' 

像其他许多提到的答案一样,要复制并粘贴到节点中,您需要调用外部程序。 在node-copy-paste的情况下,它会调用pbcopy/pbpaste (用于OSX), xclip (用于linux)和clip (用于Windows)。

当我在REPL做了很多工作的时候,这个模块非常有帮助。 不用说, copy-paste只是一个命令行实用程序 – 它不适用于服务器工作。

签出clipboardy 。 它可以让你复制/粘贴跨平台。 它比另一个答案中提到的copy-paste模块更为积极的维护,它修复了许多模块的问题。

 const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync('🦄'); 

在Windows中最短的方式:

 require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard")); 

我设法通过创build一个不同的应用程序来处理这个。 这当然不是最好的方法,但它的工作原理。

我在Windows上创build了一个VB.NET应用程序:

 Module Module1 Sub Main() Dim text = My.Application.CommandLineArgs(0) My.Computer.Clipboard.SetText(text) Console.Write(text) ' will appear on stdout End Sub End Module 

然后在Node.js中,我使用了child_process.exec来运行VB.NET应用程序,将要复制的数据作为命令行parameter passing:

 require('child_process').exec( "CopyToClipboard.exe \"test foo bar\"", function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } ); 

Mac的这个用例有一个本地命令行pbcopy

 require('child_process').exec( 'echo "test foo bar" | pbcopy', function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } ); 

用于Linux的相同代码,但用pbcopyreplacepbcopy ( apt get install xclip

检查这个zeroclipboard

npm安装zeroclipboard

Interesting Posts