ChatGPT解决这个技术问题 Extra ChatGPT

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

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

直到现在,我手动编辑了文件:添加我需要的每个包(和最低版本)。然后运行 npm link
npmjs.org/doc/install.html,这也可用于在安装新包时自动更新 package.json
@neromancer,放下你的 Gibson 书籍并解决这个问题! :)
npmjs.com/package/npm-collect 完全做到了这一点以及更多
我喜欢没有人正确回答这个问题,除了一个答案在管理员审查后被删除。 OP 想知道什么会根据其代码中的 import/require 语句自动安装/保存依赖项。 NPM 包“自动安装”是 OP 正在寻找的答案。

O
Ore4444

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

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

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

此外,您还可以使用官方工具以编程方式生成此文件:https://github.com/npm/init-package-json


谢谢npm init正是我想要的!之后,我通常会运行 npm shrinkwrap 来创建 npm-shrinkwrap.json 文件
根据 npm init:之后使用 npm install <pkg> --save 安装软件包并将其作为依赖项保存在 package.json 文件中。
在 Visual Studio 2015 的包管理器控制台中运行 npm init 后,它只显示 [...] Press ^C at any time to quit. 并停止而不询问任何内容或创建 json 文件。我错过了什么吗?
npmjs.com/package/npm-collect 允许您收集任何已安装的模块
npm init --force --yes 是生成此文件的唯一一行
A
Andre Bulatov

首先,运行

npm init

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

然后,一旦你有一个 package.json 文件,使用

npm install <pkg> --save

或者

npm install <pkg> --save-dev

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

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


似乎它现在不创建 package.json 。 win7x64节点0.10.9
我真的不喜欢我的全部答案,除了一行,重写并仍然归功于我。不管它是否过时。
关于 npm init 的具体文档是 here
这一定是正确答案。您并不总是需要手动触摸 package.json,它通常会自动处理。
在较新的 npm 版本中不再需要 --save
d
douyw

我只是写了一个简单的脚本来收集 ./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.

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


你应该把它作为一个 npm 模块发布
现在,当您返回 770 行时,您会怎么做..?我在 package.json 中只有 58 个,包括 devDependencies :-/
请注意,内置 npm ls --depth=0 将打印或多或少相同(但不确定 2012 年是否是这种情况)
这不是处理此问题的正确方法。这将输出每个模块中的每个依赖项。因此,如果您的包需要包 a,而包 a 需要包 bc,则此脚本将输出所有级别,因此 abc 不是 正确。它应该只输出a,子包将被自动解析。
是我,还是大多数答案似乎都假设您不是从 node_modules 是手动复制或构建的现有系统开始的?有时我收到一个项目文件夹,其中包含私有模块,但我无权访问存储库。一旦我将模块放入我的存储库中,我仍然想自动重新创建项目。或者也许我被告知“只需复制这个 node_modules 文件夹”。是的,是的,最佳实践,但我处理的是开发人员可能不知道自己在做什么的现实。这有助于我开始理顺这样的项目。感谢分享!
P
Pylinux

npm init

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

ls node_modules/ | xargs npm install --save

填写您在 node_modules 文件夹中的模块。

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


如果您没有为安装的每个模块使用 --save,这将非常有用。
我发现 npm init 已根据已安装的包自动添加依赖项,无需运行第二个命令。
我很高兴您可以以这种方式依赖 node_modules 文件夹名称......唷!
这在使用 npm dedupe 时也非常有用,它将模块之间共享的依赖项从这些模块中提取出来,并将它们存储在 node_modules 目录的顶层。但它没有触及 package.json!有了这个,您可以提交和共享您的重复数据删除设置。
对于事后添加 package.json 的人来说,这是一个很好的答案。
a
ahmed hamdy

命令行:

npm init

将创建 package.json 文件

将依赖项下的包安装、更新和卸载到 package.json 文件中:

命令行 :

npm install <pkg>@* --save 

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

前任:

npm install node-markdown@* --save

命令行:

npm install <pkg> --save

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

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

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

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

前任:

npm install koa-views@1.0.0 --save

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

npm install <pkg>@<version range>

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

前任:

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 文件夹中删除包


A
Abhinav Singi

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


A
Adesh M

您现在可以通过 3 个简单的步骤在节点终端上使用 Yeoman - Modern Web App Scaffolding Tool

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

$ npm install -g yo bower grunt-cli gulp

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

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

运行哟......你都完成了:

$ yo webapp  // create scaffolding 

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

Yeoman (yo) - 提供特定于框架的脚手架生态系统(称为生成器)的脚手架工具,可用于执行前面提到的一些乏味任务。

Grunt / gulp - 用于构建、预览和测试您的项目。

Bower - 用于依赖管理,因此您不再需要手动下载前端库。


A
Anmol Saraf

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

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

希望能帮助到你。


或者,您只需在 abc.txt 顶部键入 npm install ,然后在底部键入 --save 并删除新链接即可。
请注意,虽然有帮助,但这可能会安装错误版本的 NPM 包,这可能会导致应用程序失败。
使用 PowerShell 会变得更简单: ls .\node_modules\ |选择对象名称 | ForEach-Object { npm install --save }
N
Nitin Nodiyal

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


С
Саша Черных

1. 选择

如果你是 git 和 GitHub 用户:

generate-packagenpm init 更简单。

别的

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

您可以通过 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 初始化

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 示例。


D
Dileep TP
npm add <package-name>

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


n
nonopolarity

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

npm init -y

那么你随后可以做

npm i <module-name>

它会将该模块添加到 package.json