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

时间:2016-09-24 09:39:26

标签: json node.js heroku npm

我为很多软件包运行npm install,但我忘了包含--save参数。现在,当我尝试在Heroku上部署时,我会因错过某些依赖项而遇到错误。如何在不package.json的情况下自动将这些依赖项添加到npm install --save文件中?

2 个答案:

答案 0 :(得分:8)

您可以通过拨打--save自动将所有未安装package.json的已安装软件包添加到npm init。它会将依赖项附加到现有的依赖项。您的文件中的任何设置都不应丢失。仍然不要忘记将文件备份为100%安全!

如果尚未追加依赖关系,则只会发生合并失败:

  1. 备份您现有的package.json,以便保留您package.json已有的所有依赖关系以及所有其他设置。我们稍后再需要这个文件。

  2. 删除 package.json运行 npm init以创建新的package.json,其中包含已安装的模块--save中的dependencies

  3. 手动合并新创建的package.json与旧版本的依赖关系。恢复已合并的package.json

答案 1 :(得分:1)

有人已为此编写了一个脚本。 转到以下链接

stackoverflow link

这里是完整的代码 在项目文件夹中运行此代码

  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 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": ""
}