我有我的每个尝试运行它时一个节点的应用程序,我刚开始一起工作,并且它说是有缺失的模块。 我刚刚被使用npm install ...
每个模块,但做他们的10后,我不知道是否有办法有NPM拉下一个节点的应用程序所需的所有模块,而我手动安装各一台。 能不能做到?
Answer 1:
是的,只要这个依赖列入package.json
。
在包含目录中package.json
,只需键入:
npm install
Answer 2:
我创建了一个NPM模块来处理自动安装缺少的模块。
NPM-安装缺失
它会自动安装所有应用程序的依赖和子依赖性。 当子模块没有正确安装,这非常有用。
Answer 3:
您可以运行npm install yourModule --save
才能安装和自动更新package.json
这种新安装的模块。
所以,当你运行npm install
第二次将安装先前添加的每dependecy,你会不会需要重新安装所有的依赖一个接一个。
Answer 4:
我写了一个脚本这一点。
把它放在你的脚本开始,任何卸载模块将被安装在你运行它。
(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)
}
}
})
}
}
})()
Answer 5:
我的灵感来自于@Aminadav Glickshtein的回答创造我自己的,将同步安装所需模块的脚本,因为他的回答没有这些功能。
我需要一些帮助,于是我开始了一个SO问题在这里 。 你可以阅读这个脚本是如何工作有。
结果如下:
const cp = require('child_process')
const req = async module => {
try {
require.resolve(module)
} catch (e) {
console.log(`Could not resolve "${module}"\nInstalling`)
cp.execSync(`npm install ${module}`)
await setImmediate(() => {})
console.log(`"${module}" has been installed`)
}
console.log(`Requiring "${module}"`)
try {
return require(module)
} catch (e) {
console.log(`Could not include "${module}". Restart the script`)
process.exit(1)
}
}
const main = async () => {
const http = await req('http')
const path = await req('path')
const fs = await req('fs')
const express = await req('express')
// The rest of the app's code goes here
}
main()
和一衬垫(139个字符!)。 它没有全局定义child_modules
,没有最后try-catch
并在控制台中不记录任何东西:
const req=async m=>{let r=require;try{r.resolve(m)}catch(e){r('child_process').execSync('npm i '+m);await setImmediate(()=>{})}return r(m)}
const main = async () => {
const http = await req('http')
const path = await req('path')
const fs = await req('fs')
const express = await req('express')
// The rest of the app's code goes here
}
main()
文章来源: Possible to install all missing modules for a node application?