मैं एक नोड कमांड लाइन इंटरफ़ेस बना रहा हूं। यह विश्व स्तर पर स्थापित है और निष्पादित करने के लिए एक बिन फ़ाइल का उपयोग करता है।
मेरी योजना है कि मैं जिस फाइल पर काम कर रहा हूं उसकी रूट डायरेक्टरी में एक विंडो खुली हो और फिर केवल कमांड को चलाऊं लेकिन मैं वर्तमान वर्किंग डायरेक्टरी को निर्धारित करने में असमर्थ रहा हूं process.cwd()
क्योंकि नोड पैकेज की डायरेक्टरी वापस आ रही है। मैंने शुरू में यह मान लिया था कि चूंकि कोड एक बैच फ़ाइल का उपयोग करके एक रैपर के रूप में निष्पादित किया जा रहा है (यही कारण है कि बिन फाइलें शुरुआत में नोड के बिना निष्पादित कर सकती हैं) तो यह असंभव है लेकिन कॉफी-स्क्रिप्ट इसे करने का प्रबंधन करती है। मैंने कॉफी-स्क्रिप्ट स्रोत पर एक नज़र डाली, लेकिन इसका पालन नहीं कर सका (पर्याप्त अनुभव नहीं)।
खुद के लिए इसे जांचने के लिए इस package.json फ़ाइल के साथ एक पैकेज बनाएँ:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
बिन में इस परीक्षण पैकेज फ़ाइल:
#!/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');
क्या कोई इस पर कुछ प्रकाश डाल सकता है।
और फिर कोशिश करें और लिब / टेस्ट के अंदर कमांड लाइन निर्देशिका प्राप्त करें।
process.chdir()
, क्या मूल पाने का कोई तरीका है?