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

neu*_*cer 395 json node.js npm

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

Ore*_*444 588

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

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

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

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

  • 按'npm init`:之后使用`npm install <pkg> --save`来安装包并将其保存为package.json文件中的依赖项. (74认同)
  • 谢谢`npm init`正是我想要的!之后我通常运行`npm shrinkwrap`来创建一个`npm-shrinkwrap.json`文件 (9认同)
  • 在Visual Studio 2015中的程序包管理器控制台中运行`npm init`之后,它只显示`[...]按^ C随时退出.并停止而不询问任何内容或创建json文件.我错过了什么吗? (4认同)
  • `npm init --force --yes`是生成此文件的一个班轮 (3认同)
  • npmjs.com/package/npm-collect 允许你收集任何已经安装的模块 (2认同)

nzo*_*dlo 201

首先,跑

npm init
Run Code Online (Sandbox Code Playgroud)

...会问你几个关于你的项目/包的问题(先读这个),然后为你生成一个package.json文件.

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

npm install <pkg> --save
Run Code Online (Sandbox Code Playgroud)

要么

npm install <pkg> --save-dev
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我不太欣赏我的全部答案,除了一条线,重写并仍然归功于我.无论它是否过时. (33认同)
  • `npm uninstall <pkg> --save`用于卸载期间的更新. (7认同)
  • 好像现在不创建package.json.win7x64 node0.10.9 (6认同)
  • 在较新的 npm 版本中不再需要 `--save` (2认同)

dou*_*uyw 173

我刚写了一个简单的脚本来收集./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();
Run Code Online (Sandbox Code Playgroud)

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

"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.
Run Code Online (Sandbox Code Playgroud)

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

  • 你应该把它作为npm模块发布 (38认同)
  • 请注意,内置的[`npm ls --depth = 0`](http://stackoverflow.com/a/16704412/245966)将打印或多或少相同(不确定是否在2012年的情况) (3认同)
  • 这不是处理此问题的正确方法.这将输出每个模块中的每个依赖项.因此,如果你的包需要包`a`,而包`a`需要包`b`和`c`,这个脚本将输出所有级别,所以`a`,`b`,`c`是**不**正确.它应该只输出`a`,子包将自动解析. (2认同)

Pyl*_*nux 79

npm init

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

ls node_modules/ | xargs npm install --save

填写node_modules文件夹中的模块.

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

  • 如果您没有为安装的每个模块使用--save,这将非常有用. (5认同)
  • 我发现`npm init`已根据已安装的软件包自动添加了依赖项,并且无需运行第二个命令. (5认同)

ahm*_*mdy 24

命令行:

npm init
Run Code Online (Sandbox Code Playgroud)

将创建package.json文件

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

命令行:

npm install <pkg>@* --save 
Run Code Online (Sandbox Code Playgroud)

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

EX:

npm install node-markdown@* --save
Run Code Online (Sandbox Code Playgroud)

命令行:

npm install <pkg> --save
Run Code Online (Sandbox Code Playgroud)

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

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

npm install <pkg>@<version> --save
Run Code Online (Sandbox Code Playgroud)

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

EX:

npm install koa-views@1.0.0 --save
Run Code Online (Sandbox Code Playgroud)

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

npm install <pkg>@<version range>
Run Code Online (Sandbox Code Playgroud)

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

EX:

npm install koa-views@">1.0.0 <1.2.0" --save
Run Code Online (Sandbox Code Playgroud)

有关如何为包npm Doc编写版本的更多详细信息

命令行:

npm update --save
Run Code Online (Sandbox Code Playgroud)

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

命令行:

npm uninstall <pkg> --save
Run Code Online (Sandbox Code Playgroud)

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


Abh*_*ngi 14

运行npm init -y使您package.json具有所有默认值.
然后,您可以更改package.json因此
通过防止按下节省时间很多时候enter在每个命令npm init


Ade*_*h M 6

您现在可以使用Yeoman - 现代Web App脚手架工具在节点终端上使用3个简单的步骤.

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

$ npm install -g yo bower grunt-cli gulp
Run Code Online (Sandbox Code Playgroud)

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

$ npm install -g generator-webapp  // create scaffolding 
Run Code Online (Sandbox Code Playgroud)

跑哟......你们都完成了:

$ yo webapp  // create scaffolding 
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


Anm*_*raf 5

根据Pylinux的回答,以下是Windows操作系统的解决方案,

dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。