最低限度的 package.json

Svi*_*ish 4 npm package.json

当我运行时,npm init -y我得到以下package.json文件:

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
Run Code Online (Sandbox Code Playgroud)

然而,这包括一些实际上似乎不需要的东西。

  1. 实际上最低限度是package.json什么?
  2. 而且,我真的想知道,是有一个命令或标志,我可以使用具有产生的呢?

And*_*erg 7

文档指出,唯一的必填字段是nameversion

必填名称和版本字段

一个的package.json文件必须包含“”和“版本”字段:

name ”字段包含您的包的名称,并且必须是小写和一个单词,并且可以包含连字符和下划线。

版本”字段必须采用xxx形式并遵循语义版本控制指南

根据该文件init,似乎没有办法,只有这些领域虽然看起来初始化包一样,你需要自己做(或创建一个bash脚本,可以生成它为你)。

您可以像这样创建一个简单的脚本:

#!/bin/bash

printf "{\n\t\"name\": \"$1\",\n\t\"version\": \"$2\"\n}" > package.json
Run Code Online (Sandbox Code Playgroud)

并这样称呼它:

./init.sh test 1.0.0
Run Code Online (Sandbox Code Playgroud)

这将生成一个如下所示的文件:

{
    "name": "test",
    "version": "1.0.0"
}
Run Code Online (Sandbox Code Playgroud)

如果您想要一个复制行为的脚本npm init -y(使用目录名称并将版本设置为 1.0.0),请尝试以下操作:

#!/bin/bash

CURRENT=`pwd`
BASENAME=`basename "$CURRENT"`

printf "{\n\t\"name\": \"$BASENAME\",\n\t\"version\": \"1.0.0\"\n}" > package.json
Run Code Online (Sandbox Code Playgroud)

  • 这正是我一直在寻找的答案,希望下次我忘记时可以在谷歌上找到答案。谢谢! (3认同)
  • 没问题,因为我发现这很有趣,所以我忍不住添加了另一个示例脚本来复制“npm init -y”的行为 (3认同)