[英]Traversing directory in Node (Grunt)
構建grunt插件時遇到一個奇怪的問題。
基本上,我想在自己的grunt任務中使用node_module。 為此,我想向上遍歷一個層次,然后向下遍歷節點模塊以專門調用它們的一個文件。
最初,我想這樣做:
../node_modules/github-changes/bin/index.js
但是,出現以下錯誤:
Warning: Command failed: /bin/sh: 1: ../node_modules/github-changes/bin/index.js: not found
Use --force to continue.
因此,現在我有了使用Node的__dirname變量的技巧,但是它不是很漂亮:
var dirHack = __dirname.replace("/tasks", ""), // Terrible hack, need to fix
ghC = dirHack + '/node_modules/github-changes/bin/index.js';
這行得通,但是我很想避免它。
您可以在此處看到該行。
缺少什么導致了該錯誤? 我在這里想念什么嗎?
如果github-changes
是依賴項,則可以使用ghC = require.resolve('github-changes/bin/index.js')
解析包中文件的路徑。
但是,您遇到該錯誤是因為您試圖將該文件作為外殼腳本運行,而事實並非如此。 您需要使用node運行它。 查找節點可執行文件路徑的最簡單方法是process.execPath
。 請參閱http://nodejs.org/api/process.html#process_process_execpath
這是一個例子:
var exec = require('child_process').exec;
var ghC = require.resolve('github-changes/bin/index.js');
exec(process.execPath + ' ' + ghC, function(error) {});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.