Saya membuat antarmuka baris perintah node. Ini diinstal secara global dan menggunakan file bin untuk dieksekusi.
Saya berencana untuk membuka jendela perintah di direktori root dari file yang sedang saya kerjakan dan kemudian jalankan saja perintah tersebut namun saya tidak dapat menentukan direktori kerja saat process.cwd()
ini karena mengembalikan direktori paket node. Saya awalnya berasumsi bahwa karena kode sedang dieksekusi menggunakan file batch sebagai pembungkus (begitulah file bin dapat dieksekusi tanpa node di awal) maka itu tidak mungkin tetapi skrip kopi berhasil melakukannya. Saya melihat sumber skrip kopi tetapi tidak dapat mengikutinya (tidak cukup berpengalaman).
Untuk mengujinya sendiri, buat paket dengan file package.json ini:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
file paket uji ini di bin:
#!/usr/bin/env node
var path = require('path');
var fs = require('fs');
var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
require(lib + '/test');
Adakah yang bisa menjelaskan hal ini.
dan kemudian mencoba dan mendapatkan direktori baris perintah di dalam lib / test.
sumber
process.chdir()
, apakah ada cara untuk mendapatkan aslinya?var originalCwd = process.cwd();
kemudian jalankan milik Andaprocess.chdir()
, dan Anda dapat kembali ke aslinya setelah itu).../lib/test
portable?../lib/test
portabel, sedangkan mitra Windows..\lib\test
tidak ...Direktori Kerja Saat Ini
Untuk mendapatkan direktori kerja saat ini, Anda dapat menggunakan:
Namun, ketahuilah bahwa beberapa skrip, terutama gulp, akan mengubah direktori kerja saat ini dengan
process.chdir()
.Jalur Modul Node
Anda bisa mendapatkan jalur modul saat ini dengan:
__filename
__dirname
Direktori Asli (tempat perintah dimulai)
Jika Anda menjalankan skrip dari baris perintah, dan Anda menginginkan direktori asli tempat skrip dijalankan, terlepas dari direktori mana skrip tersebut saat ini beroperasi, Anda dapat menggunakan:
Direktori asli, saat bekerja dengan skrip NPM
Terkadang diinginkan untuk menjalankan skrip NPM di direktori saat ini, daripada di root proyek.
Variabel ini tersedia di dalam skrip paket npm sebagai:
Anda harus menjalankan NPM versi terbaru. Jika variabel ini tidak tersedia, pastikan NPM adalah yang terbaru.
Ini akan memungkinkan Anda mengakses jalur saat ini di package.json Anda, misalnya:
sumber
process.env.INIT_CWD
mengembalikan direktoripackage.json
Sebagai alternatif, jika Anda hanya ingin mendapatkan direktori saat ini dari skrip NodeJS saat ini, Anda dapat mencoba sesuatu yang sederhana seperti ini. Perhatikan bahwa ini tidak akan berfungsi di Node CLI itu sendiri:
sumber
path.resolve('.')
juga merupakan pilihan yang andal dan bersih, karena kami hampir selalurequire('path')
. Ini akan memberi Anda jalur absolut dari direktori tempat ia dipanggil.sumber
Inilah yang berhasil untuk saya:
sumber