[javascript] Node.js의 클립 보드에 복사 하시겠습니까?

Node.js에서 클립 보드에 복사 할 수있는 방법이 있습니까? 모듈이나 아이디어는 무엇입니까? 데스크톱 애플리케이션에서 Node.js를 사용하고 있습니다. 이것이 내가 이것을 달성 할 수 있기를 바라는 이유를 명확히하기를 바랍니다.



답변

클립 보드는 운영 체제에 고유하지 않습니다. 운영 체제가 실행되는 모든 윈도우 시스템의 구성입니다. 예를 들어 이것이 X에서 작동하도록하려면 Xlib 및 / 또는 XCB에 대한 바인딩이 필요합니다. 노드에 대한 Xlib 바인딩은 실제로 존재합니다 : https://github.com/mixu/nwm . X 클립 보드에 액세스 할 수 있는지 여부는 확실하지 않지만 직접 작성하게 될 수도 있습니다. 창에 대한 별도의 바인딩이 필요합니다.

편집 : 뭔가 해키를 원한다면 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()버퍼 또는 문자열을 사용할 수 있습니다. 문자열의 기본 인코딩은 utf-8입니다.


답변

확인하십시오 clipboardy. 플랫폼 간 복사 / 붙여 넣기를 할 수 있습니다. 다른 답변에서 언급 한copy-paste 모듈 보다 더 적극적으로 유지 관리되며 해당 모듈의 많은 문제를 해결합니다.

const clipboardy = require('clipboardy');

// Copy
clipboardy.writeSync('🦄');

// Paste
clipboardy.readSync();
//🦄


답변

다음은 제공 copy하고 paste기능 하는 모듈입니다 : 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'

언급 된 다른 많은 답변과 마찬가지로 노드에 복사하여 붙여 넣으려면 외부 프로그램을 호출해야합니다. 의 경우 (OSX의 경우), (Linux의 경우) 및 (Windows 의 경우)를 node-copy-paste호출합니다 .pbcopy/pbpastexclipclip

이 모듈은 제가 사이드 프로젝트를 위해 REPL에서 많은 작업을 할 때 매우 유용했습니다. 말할 필요도없이 copy-paste명령 줄 유틸리티 일 뿐이며 서버 작업을위한 것이 아닙니다 .


답변

Windows에서 가장 짧은 방법 :

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


답변

나는 이것을 처리하는 다른 응용 프로그램을 만들어서 그렇게 할 수 있었다. 확실히 최선의 방법은 아니지만 작동합니다.

저는 Windows에 있고 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 응용 프로그램을 실행했습니다.

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
    }
);

리눅스에 대한 동일 코드 만 교체 pbcopy와 함께 XCLIP ( apt get install xclip)