有没有办法为Node.js项目自动构建package.json文件

时间:2012-04-01 02:45:56

标签: json node.js npm

是否应该手动编辑package.json?像npm这样的程序难道只能查看文件,查看“require”语句,然后使用它将必要的条目放在package.json文件中吗?有没有这样的节目?

11 个答案:

答案 0 :(得分:580)

npm 使用package.json文件来了解您的node.js项目。

使用npm init为您生成package.json文件!

它与npm捆绑在一起。请在此处阅读其文档:https://docs.npmjs.com/cli/init

此外,您可以在自己的项目中使用一种工具以编程方式生成此文件(由npm的制造商制作):https://github.com/isaacs/init-package-json

答案 1 :(得分:200)

首先,运行

npm init

...会问你一些关于你的项目/包的问题(read this first),然后为你生成一个package.json文件。

然后,一旦有了package.json文件,请使用

npm install <pkg> --save

npm install <pkg> --save-dev

...安装依赖项并自动将其附加到package.json的{​​{1}}列表。

(注意:您可能需要手动调整依赖项的版本范围。)

答案 2 :(得分:170)

我刚写了一个简单的脚本来收集./node_modules中的依赖项。它满足了我的要求。这可能有助于其他人,我在这里发布。

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

就我而言,上面的脚本输出:

"colors": "0.6.0-1",
"commander": "1.0.5",
"htmlparser": "1.7.6",
"optimist": "0.3.5",
"progress": "0.1.0",
"request": "2.11.4",
"soupselect": "0.2.0",   // Remember: remove the comma character in the last line.

现在,您可以复制并粘贴它们。玩得开心!

答案 3 :(得分:78)

npm init

创建package.json文件,然后使用

ls node_modules/ | xargs npm install --save

填写node_modules文件夹中的模块。

编辑:@paldepind指出第二个命令是多余的,因为npm init现在会自动添加你在node_modules /文件夹中的内容。我不知道是否一直如此,但现在至少,它没有第二个命令。

答案 4 :(得分:24)

命令行

npm init

将创建package.json文件

在依赖项下安装,更新和卸载软件包到package.json文件中:

命令行

npm install <pkg>@* --save 

会自动将依赖项下包的最新版本添加到package.json文件

EX:

npm install node-markdown@* --save

命令行

npm install <pkg> --save

还会自动将依赖项下包的最新版本添加到package.json文件

如果您需要特定版本的套餐,请使用命令行

npm install <pkg>@<version> --save

会自动将依赖项下特定版本的软件包添加到package.json文件

EX:

npm install koa-views@1.0.0 --save

如果您需要特定的软件包版本,请使用命令行

npm install <pkg>@<version range>

会自动将包的最新版本在依赖项下的版本范围内添加到package.json文件

EX:

npm install koa-views@">1.0.0 <1.2.0" --save

有关如何为包npm Doc

编写版本的更多详细信息

命令行

npm update --save

会将软件包更新到package.json文件中,并会自动将依赖项下所有软件包的更新版本添加到package.json文件中

命令行

npm uninstall <pkg> --save

会自动将包从依赖项中删除到package.json文件中并从node_module文件夹中删除包

答案 5 :(得分:13)

正在运行npm init -y会使您的package.json具有所有默认值。
然后,您可以相应地更改package.json
这可以通过阻止enter

中的每个命令按npm init来节省时间

答案 6 :(得分:5)

基于Pylinux的回答,下面是Windows操作系统的解决方案,

dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save

希望它有所帮助。

答案 7 :(得分:1)

使用命令npm init -f生成package.json文件,然后在每个命令后使用--save,以便每个模块在package.json中自动更新 例如:npm install express --save

答案 8 :(得分:0)

1。选择

如果你git和GitHub用户:

generate-packagenpm init更简单。

<强>否则

和/或您不喜欢package.json模板,即generate-package或npm init生成:

您可以通过脚手架应用生成自己的模板generatesailsyeoman

2。相关性

这个答案与2018年3月有关。将来,这个答案的数据可能已经过时了。

本回答的作者在2018年3月亲自使用了generate-package。

3。限制

您需要使用git和GitHub来使用generate-package。

4。示范

例如,我创建了空白文件夹sasha-npm-init-vs-generate-package

4.1。生成封装

命令:

D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package
[16:58:52] starting generate
[16:59:01] √ running tasks: [ 'package' ]
[16:59:04] starting package
? Project description? generate-package demo
? Author's name? Sasha Chernykh
? Author's URL? https://vk.com/hair_in_the_wind
[17:00:19] finished package √ 1m

package.json

{
  "name": "sasha-npm-init-vs-generate-package",
  "description": "generate-package demo",
  "version": "0.1.0",
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package",
  "author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)",
  "repository": "Kristinita/sasha-npm-init-vs-generate-package",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "license": "MIT",
  "engines": {
    "node": ">=4"
  },
  "scripts": {
    "test": "mocha"
  },
  "keywords": [
    "generate",
    "init",
    "npm",
    "package",
    "sasha",
    "vs"
  ]
}

4.2。 npm init

D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sasha-npm-init-vs-generate-package)
version: (1.0.0) 0.1.0
description: npm init demo
entry point: (index.js)
test command: mocha
git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package
keywords: generate, package, npm, package, sasha, vs
author: Sasha Chernykh
license: (ISC) MIT
About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json:

{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}


Is this ok? (yes) y
{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}

我认为generate-package更简单,即npm init

5。定制

创建自己的package.json模板,请参阅generateyeoman示例。

答案 9 :(得分:0)

npm add <package-name>

以上命令会将包添加到节点模块并更新package.json文件

答案 10 :(得分:-1)

简短回答:要将现有已安装的 npm 模块添加到不存在的 package.json,请使用

npm init -y

然后你可以做

npm i <module-name>

并将该模块添加到 package.json