Apakah ada cara untuk menyalin ke clipboard di Node.js? Ada modul atau ide apa saja? Saya menggunakan Node.js pada aplikasi desktop. Mudah-mudahan itu menjelaskan mengapa saya ingin bisa mencapai ini.
sumber
Apakah ada cara untuk menyalin ke clipboard di Node.js? Ada modul atau ide apa saja? Saya menggunakan Node.js pada aplikasi desktop. Mudah-mudahan itu menjelaskan mengapa saya ingin bisa mencapai ini.
Papan klip tidak melekat pada sistem operasi. Ini adalah konstruksi dari sistem jendela apa pun yang kebetulan sedang dijalankan oleh sistem operasi. Jadi, jika Anda ingin ini berfungsi pada X misalnya, Anda memerlukan binding ke Xlib dan / atau XCB. Binding Xlib untuk node sebenarnya ada: https://github.com/mixu/nwm . Meskipun saya tidak yakin apakah itu memberi Anda akses ke papan klip X, Anda mungkin akhirnya menulis milik Anda sendiri. Anda membutuhkan binding terpisah untuk windows.
edit: Jika Anda ingin melakukan sesuatu yang hacky, Anda juga dapat menggunakan 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);
});
Untuk OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
dapat mengambil buffer atau string. Pengkodean default untuk string adalah utf-8.sumber
Lihat
clipboardy
. Ini memungkinkan Anda menyalin / menempel lintas platform. Ini lebih aktif dipelihara daripadacopy-paste
modul yang disebutkan dalam jawaban lain dan memperbaiki banyak masalah modul itu.const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync(); //🦄
sumber
çlipboardy
di cypress. Saya memiliki tombol di aplikasi web saya, dengan mengklik tombol itu akan mendapatkan konten clipboard tetapi memberikan tidak ditentukan, input apa pun sangat dihargai stackoverflow.com/questions/61650737/…Berikut adalah modul yang menyediakan
copy
danpaste
berfungsi: https://github.com/xavi-/node-copy-pasteSaat
require("copy-paste").global()
dijalankan, dua fungsi global ditambahkan:> copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello'
Seperti banyak jawaban lain yang disebutkan, untuk menyalin dan menempel di node Anda perlu memanggil program eksternal. Dalam kasus
node-copy-paste
, itu memanggilpbcopy/pbpaste
(untuk OSX),xclip
(untuk linux), danclip
(untuk windows).Modul ini sangat membantu ketika saya melakukan banyak pekerjaan di REPL untuk proyek sampingan. Tak perlu dikatakan,
copy-paste
hanya utilitas baris perintah - itu tidak dimaksudkan untuk pekerjaan server.sumber
Cara terpendek di Windows:
const util = require("util"); require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
sumber
util
dulu.ReferenceError: util is not defined
tanpa terlebih dahulu termasukconst util = require("util")
saya menguji di kedua utama Electon dan proses render tidak berhasil. Yang dikatakan dari node 12.14.1 CLI itu berhasil. Saya pikir aman untuk mengatakan Anda harus mendefinisikan util agar berada di sisi yang aman berdasarkan kasus penggunaan.Saya berhasil melakukannya dengan membuat aplikasi berbeda yang menangani ini. Ini tentu bukan cara terbaik, tapi berhasil.
Saya menggunakan Windows dan membuat aplikasi 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
Kemudian di Node.js, saya biasa
child_process.exec
menjalankan aplikasi VB.NET, dengan data yang akan disalin diteruskan sebagai argumen baris perintah:require('child_process').exec( "CopyToClipboard.exe \"test foo bar\"", function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
sumber
Mac memiliki baris perintah asli
pbcopy
untuk usecase ini:require('child_process').exec( 'echo "test foo bar" | pbcopy', function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
Kode yang sama untuk Linux tetapi ganti
pbcopy
dengan Xclip (apt get install xclip
)sumber
echo fooo | clip
. Sekarang, bagaimana memiliki ini di Linux tanpa meminta pengguna untuk menginstal sesuatu?echo fooo | clip
dapat bekerja, tetapi hasilnya akan berisi '\ n' di akhir string utama, itu di luar dugaan saya.periksa zeroclipboard ini
sumber