我运行了npm install
命令安装了很多包,但是我忘记加上--save
参数。现在当我尝试在Heroku上部署时,出现缺少某些依赖项的错误。如何自动将这些依赖项添加到我的package.json
文件中,而不必为每个依赖项运行npm install --save
命令?
npm init
自动将所有未使用--save
安装的软件包添加到您的package.json
中。它将把依赖项附加到现有依赖项上,文件中的任何设置都不应该丢失。但请别忘了备份文件以确保100%安全! 如果依赖关系没有被附加,则可能只是合并失败:
package.json
中拥有的依赖关系和所有其他设置,请备份您现有的package.json
文件。稍后我们需要这个文件。package.json
并运行npm init
以创建一个新的package.json
,其中包括已安装但未使用--save
的模块在dependencies
中。package.json
的依赖项到旧文件中。恢复您已合并的package.json
文件。已经有人为此编写了脚本。 请访问以下链接:
这是完整的代码, 将此代码运行在您的项目文件夹中。
var fs = require("fs");
function main() {
fs.readdir("./node_modules", function (err, dirs) {
if (err) {
console.log(err);
return;
}
dirs.forEach(function(dir){
if (dir.indexOf(".") !== 0) {
var packageJsonFile = "./node_modules/" + dir + "/package.json";
if (fs.existsSync(packageJsonFile)) {
fs.readFile(packageJsonFile, function (err, data) {
if (err) {
console.log(err);
}
else {
var json = JSON.parse(data);
console.log('"'+json.name+'": "' + json.version + '",');
}
});
}
}
});
});
}
main();
"ansi-regex": "2.0.0",
"ansi-styles": "2.2.1",
"asn1": "0.2.3",
"assert-plus": "0.2.0",
"asynckit": "0.4.0",
"aws-sign2": "0.6.0",
"bcrypt-pbkdf": "1.0.0",
"aws4": "1.4.1",
"bindings": "1.2.1",
"bl": "1.1.2",
"boom": "2.10.1",
"caseless": "0.11.0",
"chalk": "1.1.3",
"combined-stream": "1.0.5",
"core-util-is": "1.0.2",
"compress": "0.99.0",
"commander": "2.9.0",
"cryptiles": "2.0.5",
"delayed-stream": "1.0.0",
"dashdash": "1.14.0",
"debug": "0.7.4",
"ecc-jsbn": "0.1.1",
"ejs": "2.3.4",
"escape-string-regexp": "1.0.5",
将以下内容复制并粘贴到您的package.json文件中
{
"name": "test",
"version": "1.0.0",
"main": "server.js",
"dependencies": {
//paste above printed data here
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": ""
}