如何将通过npm安装的所有依赖项保存到我的package.json文件中?

7

我运行了npm install命令安装了很多包,但是我忘记加上--save参数。现在当我尝试在Heroku上部署时,出现缺少某些依赖项的错误。如何自动将这些依赖项添加到我的package.json文件中,而不必为每个依赖项运行npm install --save命令?

2个回答

11
您可以通过调用npm init自动将所有未使用--save安装的软件包添加到您的package.json中。它将把依赖项附加到现有依赖项上,文件中的任何设置都不应该丢失。但请别忘了备份文件以确保100%安全! 如果依赖关系没有被附加,则可能只是合并失败:
  1. 为了保留您已经在package.json中拥有的依赖关系和所有其他设置,请备份您现有的package.json文件。稍后我们需要这个文件。
  2. 删除package.json运行npm init以创建一个新的package.json,其中包括已安装但未使用--save的模块在dependencies中。
  3. 手动合并您新创建的package.json的依赖项到旧文件中。恢复您已合并的package.json文件。

这不会替换我的项目文件吗? - Jonathan Allen Grant
2
您的项目文件和node_modules不会受到影响。这一切都与package.json有关。 - Michael Troger

1

已经有人为此编写了脚本。 请访问以下链接:

stackoverflow链接

这是完整的代码, 将此代码运行在您的项目文件夹中。

  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();

它将打印出 node_module 文件夹中的所有依赖项,如下所示。
"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": ""
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接