描述
JSON文件,实际的JSON,不是js对象
文档中的行为会受到npm config配置影响
name
如果要发布包name和version是必须填写
的
规则
建议
js
或者node
,可以在使用engines
字段指定引擎(js或者node环境)@myorg/ myppackage
,具体请看scopeversion
发布时version必填
,version可以被semver解析
description
写一段描述,有助于人们搜索包,它会在npm官网搜索中列出
keywords
关键词字符数组,有助于人们搜索包
homepage
项目主页的url
示例:
"homepage": "https://github.com/owner/project#readme"
bugs
项目问题issues的url和电子邮件的地址
示例:
{
"url" : "https://github.com/owner/project/issues",
"email" : "project@hostname.com"
}
license
通用许可,说白了就是告诉大家这个包是否开源
{ "license" : "MIT" }
author
下面示例包含Barney Rubble
作者名称,email,
(http://barnyrubble.tumblr.com/)
url,三个部分组成,
其中email和url是可选的
{
"author": "Barney Rubble (http://barnyrubble.tumblr.com/)"
}
funding
字符串URL,对象,数组都可以,主要放一些帮助写项目的信息,比如捐助的url
{
"funding": {
type" : "individual",
"url" : "http://example.com/donate"
},
"funding": {
"type" : "patreon",
"url" : "https://www.patreon.com/my-account"
},
"funding": "http://example.com/donate",
"funding": [
{
"type" : "individual",
"url" : "http://example.com/donate"
},
"http://example.com/donateAlso",
{
"type" : "patreon",
"url" : "https://www.patreon.com/my-account"
}]
}
files
可选的字段,描述包作为依赖项安装时要包含的项,不写这个字段默认包含所有文件
无论怎么设置,都是包含以下的文件
package.json
README
LICENSE / LICENCE
mian字段中的文件
总是被忽略
.git
CVS
.svn
.hg
.lock-wscript
.wafpickle-N
.*.swp
.DS_Store
._*
npm-debug.log
.npmrc
node_modules
config.gypi
*.orig
package-lock.json
main
程序的入口,如果包名字为foo
,执行require('foo')
,执行主入口的exports对象
对于大多数模块,最合理的做法只有一个主入口,未设置main,默认为包跟文件夹中的index.js
browser
如果您的模块打算在客户端使用,则应该使用浏览器字段而不是主字段。这有助于提示用户它可能依赖于Node.js模块中不可用的原语。(如窗口)
bin
一般做脚手架会用到
拿create-vue
举例子
"bin": {
"create-vue": "outfile.cjs"
}
npm create vue
做了什么
其实npm create
就是npm init
的别名, 执行的npm init vue,找到vue命令,找到对应软链接
执行outfile.cjs
man
没看懂什么意思,找到其他文章看说是Linux 中的帮助指令(使用情景较少)
directories
同样没看懂 定义项目目录结构的字段(使用情景较少)
repository
项目代码仓库地址
scripts
脚本入口
config
config: {
"aaa": "bbb"
}
在脚本中可以通过process.env.npm_package_config_aaa
获取
dependencies
生产环境的依赖包
devDependencies
开发环境的依赖包
peerDependencies
减少包体积用,直接用电脑的依赖包,版本需要和声明的依赖版本一致
peerDependenciesMeta
用户电脑没有安装peer声明的依赖包,npm不会报错
{
"peerDependenciesMeta": {
"vue": {
"optional": true
}
}
}
bundleDependencies
使用场景少
optionalDependencies
使用场景少
overrides
覆盖依赖
{
"overrides": {
"vue": "^3.3"
}
}
engines
node或者npm版本要求
{
"engines": {
"node": "v>=16.0.0 6.9.0"
}
}
os
指定操作系统
支持
"os": [
"darwin",
"linux"
]
禁用
"os": ["!win32"]
cpu
同上,指定cpu
privite
设置true,发不了npm,要设为false
publishConfig
指定包发布的注册表 URL,指定所有用户都可以访问
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"access": "public"
}
workspaces
monorepo
子包会软链接到跟目录node_modules
{
"workspaces": "packages/*"
}