¿Hay alguna forma de copiar al portapapeles en Node.js? ¿Algún módulo o idea que tal? Estoy usando Node.js en una aplicación de escritorio. Con suerte, eso aclara por qué quiero que pueda lograr esto.
javascript
node.js
clipboard
Torre
fuente
fuente
Para OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
puede tomar un búfer o una cadena. La codificación predeterminada para una cadena será utf-8.fuente
Echa un vistazo
clipboardy
. Te permite copiar / pegar multiplataforma. Se mantiene más activamente que elcopy-paste
módulo mencionado en otra respuesta y soluciona muchos de los problemas de ese módulo.const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync(); //🦄
fuente
çlipboardy
de npm en cypress. Tengo un botón en mi aplicación web, al hacer clic en ese botón debería obtener el contenido del portapapeles, pero no está definido, cualquier entrada es muy apreciada. Stackoverflow.com/questions/61650737/…Aquí hay un módulo que proporciona
copy
ypaste
funciona: https://github.com/xavi-/node-copy-pasteCuando
require("copy-paste").global()
se ejecuta, se agregan dos funciones globales:> copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello'
Como muchas de las otras respuestas mencionadas, para copiar y pegar en el nodo, debe llamar a un programa externo. En el caso de
node-copy-paste
, llama apbcopy/pbpaste
(para OSX),xclip
(para Linux) yclip
(para Windows).Este módulo fue muy útil cuando estaba trabajando mucho en el REPL para un proyecto paralelo. Ni que decir tiene,
copy-paste
es sólo una utilidad de línea de comandos - es no significaba para el trabajo del servidor.fuente
Camino más corto en Windows:
const util = require("util"); require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
fuente
util
primero.ReferenceError: util is not defined
sin primero incluirconst util = require("util")
que probé tanto en el proceso principal como en el de renderizado de Electon sin suerte. Dicho esto, desde el nodo 12.14.1 CLI funcionó. Creo que es seguro decir que debe definir util para estar seguro según el caso de uso.Logré hacerlo creando una aplicación diferente que maneja esto. Ciertamente no es la mejor manera, pero funciona.
Estoy en Windows y creé una aplicación 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
Luego, en Node.js, solía
child_process.exec
ejecutar la aplicación VB.NET, con los datos que se copiarían pasados como un argumento de línea 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 } );
fuente
Mac tiene una línea de comandos 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 } );
Mismo código para Linux pero reemplaza
pbcopy
con Xclip (apt get install xclip
)fuente
echo fooo | clip
. Ahora, ¿cómo tener esto en Linux sin pedirle al usuario que instale algo?echo fooo | clip
puede funcionar, pero el resultado contendrá un '\ n' al final de la cadena principal, está fuera de lo esperado.mira este portapapeles cero
fuente