是否可以自动下载node.js脚本所需的模块?我想知道是否可以为node.js脚本(如下所示)生成所需模块的列表,并自动安装它们,而不是手动安装它们(逐个使用npm).
#!/usr/bin/env node
var DNode = require('dnode');
var sys = require('sys');
var fs = require('fs');
var http = require('http');
var html = fs.readFileSync(__dirname + '/web.html');
var js = require('dnode/web').source();
//the rest of this script is omitted.
Run Code Online (Sandbox Code Playgroud)
And*_*Mao 17
是的,有一个很棒的代码叫做NPM就是这样:https://npmjs.org/
您可以在package.json
文件中指定依赖包(请参阅文档中的语法),您可以使用npm install .
它们一次性将它们全部拉出来,然后require
从脚本中取出它们.
Package.json语法页面:https://docs.npmjs.com/getting-started/using-a-package.json
第一次安装模块时,您可以提供任意数量的模块进行安装,并添加--save
参数以自动将其添加到您的模块中package.json
npm i --save dnode request bluebird
Run Code Online (Sandbox Code Playgroud)
下次有人会执行npm i
它会自动安装你指定的所有模块package.json
我为此写了一个脚本.
将其放在脚本的开头,并在运行时安装任何已卸载的模块.
(function () {
var r = require
require = function (n) {
try {
return r(n)
} catch (e) {
console.log(`Module "${n}" was not found and will be installed`)
r('child_process').exec(`npm i ${n}`, function (err, body) {
if (err) {
console.log(`Module "${n}" could not be installed. Try again or install manually`)
console.log(body)
exit(1)
} else {
console.log(`Module "${n}" was installed. Will try to require again`)
try{
return r(n)
} catch (e) {
console.log(`Module "${n}" could not be required. Please restart the app`)
console.log(e)
exit(1)
}
}
})
}
}
})()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9503 次 |
最近记录: |