Existe uma maneira de copiar para a área de transferência em Node.js? Quaisquer módulos ou ideias de qualquer tipo? Estou usando o Node.js em um aplicativo de desktop. Espero que isso esclareça por que eu quero ser capaz de conseguir isso.
fonte
Existe uma maneira de copiar para a área de transferência em Node.js? Quaisquer módulos ou ideias de qualquer tipo? Estou usando o Node.js em um aplicativo de desktop. Espero que isso esclareça por que eu quero ser capaz de conseguir isso.
A área de transferência não é inerente a um sistema operacional. É uma construção de qualquer sistema de janela que o sistema operacional esteja executando. Portanto, se você quiser que isso funcione no X, por exemplo, precisará de ligações para Xlib e / ou XCB. As ligações Xlib para o nó realmente existem: https://github.com/mixu/nwm . Embora eu não tenha certeza se isso lhe dá acesso à área de transferência do X, você pode acabar escrevendo a sua própria. Você precisará de ligações separadas para janelas.
editar: Se você quiser fazer algo hacky, você também pode usar o 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);
});
Para OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
pode levar um buffer ou uma string. A codificação padrão para uma string será utf-8.fonte
Confira
clipboardy
. Ele permite que você copie / cole plataforma cruzada. É mantido mais ativamente do que ocopy-paste
módulo mencionado em outra resposta e corrige muitos dos problemas desse módulo.const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync(); //🦄
fonte
çlipboardy
no cypress. Eu tenho um botão no meu aplicativo da web, ao clicar nesse botão deve obter o conteúdo da área de transferência, mas dá undefined, quaisquer entradas são muito apreciadas stackoverflow.com/questions/61650737/…Aqui está um módulo que fornece
copy
epaste
funções: https://github.com/xavi-/node-copy-pasteQuando
require("copy-paste").global()
é executado, duas funções globais são adicionadas:> copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello'
Como muitas das outras respostas mencionadas, para copiar e colar no nó, você precisa chamar um programa externo. No caso de
node-copy-paste
, chama parapbcopy/pbpaste
(para OSX),xclip
(para linux) eclip
(para Windows).Este módulo foi muito útil quando eu estava trabalhando muito no REPL para um projeto paralelo. Escusado será dizer que
copy-paste
é apenas uma linha de comando utilidade - é não significava para o trabalho do servidor.fonte
Caminho mais curto no Windows:
const util = require("util"); require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
fonte
util
primeiro.ReferenceError: util is not defined
sem incluirconst util = require("util")
eu testei no Electon principal e no processo de renderização sem sorte. Dito isso, a partir do nó 12.14.1 CLI funcionou. Acho que é seguro dizer que você deve definir util para estar do lado seguro com base no caso de uso.Consegui fazer isso criando um aplicativo diferente que lida com isso. Certamente não é a melhor maneira, mas funciona.
Estou no Windows e criei um aplicativo 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
Então, no Node.js, eu costumava
child_process.exec
executar o aplicativo VB.NET, com os dados a serem copiados passados como um argumento de linha de comando:require('child_process').exec( "CopyToClipboard.exe \"test foo bar\"", function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
fonte
O Mac tem uma linha de comando nativa
pbcopy
para este caso de uso:require('child_process').exec( 'echo "test foo bar" | pbcopy', function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
Mesmo código para Linux, mas substitua
pbcopy
por Xclip (apt get install xclip
)fonte
echo fooo | clip
. Agora, como fazer isso no Linux sem pedir ao usuário para instalar algo?echo fooo | clip
pode funcionar, mas o resultado conterá um '\ n' no final da string primária, está fora do meu esperado.verifique este zeroclipboard
fonte