Tôi đang tạo giao diện dòng lệnh nút. Nó được cài đặt toàn cầu và sử dụng tệp bin để thực thi.
Tôi dự định mở một cửa sổ lệnh tại thư mục gốc của các tệp tôi đang làm việc và sau đó chỉ cần chạy lệnh, tuy nhiên tôi không thể xác định thư mục làm việc hiện tại như process.cwd()
đang trả về thư mục của gói nút. Ban đầu tôi giả định rằng vì mã đang được thực thi bằng cách sử dụng tệp loạt làm trình bao bọc (đó là cách tệp bin có thể thực thi mà không có nút ở đầu) nên điều đó là không thể nhưng coffee-script quản lý để làm điều đó. Tôi đã xem qua nguồn coffee-script nhưng không theo được (chưa đủ kinh nghiệm).
Để tự kiểm tra nó, hãy tạo một gói với tệp package.json này:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
tệp gói thử nghiệm này trong thùng:
#!/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');
Bất cứ ai có thể làm sáng tỏ điều này.
và sau đó thử và lấy thư mục dòng lệnh bên trong lib / test.
process.chdir()
, có cách nào để lấy lại bản gốc?