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

Is there a way to automatically build the package.json file for Node.js projects

package.json是否应该手动编辑?像NPM这样的程序不能只查看文件,查看"require"语句,然后用它将必要的条目放入package.json文件中吗?有这样的节目吗?


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

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

它与NPM捆绑在一起。请阅读以下文档:https://docs.npmjs.com/cli/init

另外,还有一个官方工具可以用来以编程方式生成这个文件:https://github.com/npm/init-package-json


首先,快跑

1
npm init

…将询问您一些关于您的项目/包的问题(首先阅读本文),然后为您生成package.json文件。

然后,一旦您有了package.json文件,就可以使用

1
npm install <pkg> --save

1
npm install <pkg> --save-dev

…安装依赖项并自动将其附加到您的package.jsondependencies列表中。

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


我刚刚编写了一个简单的脚本来收集./node_模块中的依赖项。它现在满足了我的要求。这可能对其他人有帮助,我把它贴在这里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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();

在我的例子中,上面的脚本输出:

1
2
3
4
5
6
7
"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.

现在,您可以复制和粘贴它们。玩得高兴!


npm init

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

江户十一〔四〕号

填写node_modules文件夹中的模块。

编辑:@paldepind指出第二个命令是多余的,因为npm init现在自动添加您在节点模块/文件夹中的内容。我不知道情况是否总是这样,但至少现在,它在没有第二个命令的情况下工作。


命令行:

1
npm init

将创建package.json文件

要将依赖项下的包安装、更新和卸载到package.json文件中,请执行以下操作:

命令行:

1
npm install <pkg>@* --save

将在dependencies下自动将包的最新版本添加到package.json文件中

前任:

1
npm install node-markdown@* --save

命令行:

1
npm install <pkg> --save

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

如果需要包的特定版本,请使用以下命令行:

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

将在dependencies下自动将特定版本的包添加到package.json文件中

前任:

1
npm install [email protected] --save

如果需要包的特定版本范围,请使用以下命令行:

1
npm install <pkg>@<version range>

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

前任:

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

有关如何编写包NPM文档版本的详细信息

命令行:

1
npm update --save

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

命令行:

1
npm uninstall <pkg> --save

将自动从依赖项中删除package.json文件中的包,并从node_module文件夹中删除包。


运行npm init -y将使您的package.json具有所有默认值。然后您可以相应地更改package.json。通过防止在npm init中的每个命令上按enter可以多次节省时间。


现在,您可以在节点终端上使用Yeoman-现代Web应用程序脚手架工具,只需3个简单的步骤。

首先,您需要安装yo和其他必需的工具:

1
$ npm install -g yo bower grunt-cli gulp

要搭建Web应用程序,请安装Generator Web应用程序生成器:

1
$ npm install -g generator-webapp  // create scaffolding

快跑,哟……你们都完成了:

1
$ yo webapp  // create scaffolding

Yeoman可以为整个Web应用程序或控制器和模型编写样板代码。它可以启动实时预览Web服务器进行编辑和编译;不仅如此,您还可以运行单元测试、最小化和连接代码、优化图像等等…

yeoman(yo)-一种脚手架工具,它提供了一个特定于框架的脚手架生态系统,称为生成器,可用于执行前面提到的一些繁琐的任务。

咕噜/咕噜-用于构建、预览和测试项目。

bower-用于依赖关系管理,这样您就不再需要手动下载前端库了。


基于pylinux的答案,下面是一个针对Windows操作系统的解决方案,

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

希望有帮助。


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


1。选择

如果您是Git和Github用户:

?????generate-packagenpm init更简单。

其他的

和/或您不喜欢生成包的package.json模板或npm init生成:

?????您可以通过脚手架应用程序生成自己的模板,如generate、sails或yeoman。

2。关联

此答案适用于2018年3月。将来,此答案中的数据可能会过时。

该答案的作者在2018年3月亲自使用了生成包。

三。限制

您需要使用git和github来使用生成包。

4。演示

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

4.1。生成包

命令:

1
2
3
4
5
6
7
8
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号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
 "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初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
 "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模板,请参见生成和约曼示例。