2
如何將啓動腳本添加到node.js
cli?例如。爲require
ing模塊或設置一些選項?有一個啓動腳本到NodeJS CLI
編輯: 我談論服務器側,即我希望能夠在我的系統的任何部分,以啓動node
CLI並使其預加載啓動腳本上(類同一個bashrc
)全球一級。
如何將啓動腳本添加到node.js
cli?例如。爲require
ing模塊或設置一些選項?有一個啓動腳本到NodeJS CLI
編輯: 我談論服務器側,即我希望能夠在我的系統的任何部分,以啓動node
CLI並使其預加載啓動腳本上(類同一個bashrc
)全球一級。
當我閱讀你的文章時,我意識到當前的Node.js REPL很糟糕!所以我做了一個關於你的帖子功能的基本演示,我把它叫做rattle。
在這裏,我將解釋代碼的每一行:
#!/usr/bin/env node
這是家當,它可以確保它的運行作爲節點
const repl = require("repl"),
vm = require("vm"),
fs = require("fs"),
path = require("path"),
spawn = require("child_process").spawn,
package = require("./package");
導入所有的包,你就知道鑽
function insertFile(file, context) {
fs.readFile(file, function(err, contents) {
if (err)
throw err;
vm.runInContext(contents, context);
});
}
我定義函數來將文件插入一個VM上下文(其REPL是)
if (process.argv.includes("--global")) {
console.log(path.resolve(__dirname, ".noderc"));
顯示全球.noderc
/** Hijack the REPL, if asked **/
} else if (process.argv.length < 3 || process.argv.includes("-i") || process.argv.includes("--interactive")) {
的位置,這開始是代碼的肉。該檢測,如果用戶想進入REPL模式
console.log(`rattle v${package.version}`);
var cmdline = repl.start("> "),
context = cmdline.context;
創建REPL,與標準的提示,並獲得VM上下文
/** Insert config files **/
fs.access(localrc = path.resolve(process.cwd(), ".noderc"), function(noLocal) {
if (!noLocal) {
insertFile(localrc, context);
}
});
測試,如果有一個地方.noderc,如果有插入它爲背景
fs.access(globalrc = path.resolve(__dirname, ".noderc"), function(noGlobal) {
if (!noGlobal && globalrc !== localrc) {
insertFile(globalrc, context);
}
});
測試全球.noderc,然後將其插入
} else {
/** Defer to node.js **/
var node = spawn("node", process.argv.slice(2));
node.stdout.pipe(process.stdout);
node.stderr.pipe(process.stderr);
}
其餘這只是代碼傳遞給節點,因爲它不是REPL的東西
這很有趣寫,並希望對某人有用。
祝你好運!
可能重複[JavaScript需要()在客戶端](http://stackoverflow.com/questions/5168451/javascript-require-on-client-side) – Arthur
您可能將不得不效仿自己使用[REPL](https://nodejs.org/api/repl.html)API複製。很快我就會回家,如果你不知道,我會寫一個基本的原型 – MayorMonty