针对package.json的理解

1、什么是package.json?

package.json文件描述了一个NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息。格式必须是严格的JSON格式。当我们创建一个前端项目时候,可以使用npm init命令,通过交互式的命令,自动生成一个package.json文件,里面包含了常用的一些字段信息。

下面是简单的package.json文件格式,仅仅定义了里两个元数据:名称和版本号

{

"name":"xxx",

"version":"0.1.0",

}

package.json文件就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。比如name就是项目名称,version是版本(遵守“大版本.次要版本.小版本”的格式)。

2、package.json具体配置说明

{

    "name": "gml",

    "title": "test01",

    "author": "2939292@qq.com",

    "version": "0.0.0",

    "homepage": "xxxxx",

    "repository": {

        "type": "git/svn",

        "url": "https://github.com/xxxxx"

    },

    "bugs": "https://github.com/xxxxx",

    "devDependencies": {

        "grunt": "~0.4.5",

        "grunt-contrib-less": "~0.11.4",

        "grunt-contrib-watch": "~0.6.1",

        "grunt-banner": "~0.2.3",

        "grunt-contrib-uglify": "~0.5.1"

    },

    "scripts": {

        "preview": "cd _site; python -m SimpleHTTPServer 8020",

        "py3view": "cd _site; python3 -m http.server 8020",

        "watch"  : "grunt watch & npm run preview & jekyll serve -w",

        "py3wa"  : "grunt watch & npm run py3view & jekyll serve -w",

        "boil"  : "git push boilerplate boilerplate:master",

        "push"  : "git push origin master --tag",

        "cafe"  : "git co gitcafe-pages; git merge master; git push gitcafe gitcafe-pages:gitcafe-pages --tag; git co master;"

    }

}

必须字段

1.Name

项目名称

全部小写,没有空格,可以使用下划线或者横线

2.Version

项目版本号

x.x.x 的格式

符合“语义化版本规则”

可选字段

1.title

标题

2.author

"author": "gml <29392923829@qq.com>",

3.homepage

项目url主页

4.repository

用于指示代码存放的位置。

"repository": {

        "type": "git/svn",

        "url": "https://github.com/choerodon/choerodon.git"

    }

6.devDependencies

指定项目开发所需要的模块,如果只需要下载使用某些模块,而不下载这些模块的测试和文档框架,放在这个下面比较不错。

"devDependencies": {

"eslint":"^5.15.1",

"eslint-config-airbnb":"^17.1.0",

"eslint-plugin-babel":"^5.3.0",

"eslint-plugin-import":"^2.17.2",

"eslint-plugin-jsx-a11y":"^6.2.1",

"eslint-plugin-react":"^7.13.0",

"lint-staged":"^8.1.7"

    }

7.scripts

object

Key是生命周期事件名,value是在事件点要跑的命令。参考npm-scripts。

**scripts指定了运行脚本命令的npm命令行缩写,比如push指定了运行npm run push时,所要执行的命令。

"scripts": {

"dev":"rimraf .cache && npm start",

"start":"yqcloud-front-boot start --config ../config.js",

"build":"yqcloud-front-boot build --config ../config.js",

"lint":"npm run lint:es && npm run lint:style",

"lint:es":"eslint src/**/*.{js,jsx} ../config.js",

"lint:style":"stylelint src/**/*.scss --syntax scss",

"lint-staged":"lint-staged",

"lint-staged:es":"eslint",

"eslint":"npm run eslint:fix",

"eslint:fix":"eslint --fix 'src/**/*.js*'"

},

其它字段

1.Dependencies

指示当前包所依赖的其他包。

{ "dependencies" :

  { "foo" : "1.0.0 - 2.9999.9999"

  , "bar" : ">=1.0.2 <2.1.2"

  , "baz" : ">1.0.2 <=2.3.4"

  , "boo" : "2.0.1"

  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"

  , "asd" : "http://asdf.com/asdf.tar.gz"

  , "til" : "~1.2"

  , "elf" : "~1.2.3"

  , "two" : "2.x"

  , "thr" : "3.3.x"

  }

}

版本格式可以是下面任一种:

* ersion 完全匹配

* >version 大于这个版本

* >=version大于或等于这个版本

* <version

* <=version

* ~version 非常接近这个版本

* ^version 与当前版本兼容

* 1.2.x X代表任意数字,因此1.2.1, 1.2.3等都可以

* http://... Unix系统下使用的tarball的URL。

* * 任何版本都可以

* ""任何版本都可以

* version1 - version2  等价于 >=version1 <=version2.

* range1 || range2 满足任意一个即可

* git... Git地址

* user/repo

2.License

授权方式,如果是使用一个普遍的license,比如BSD-3-Clause或MIT,直接使用:

{ "license" : "(ISC OR GPL-3.0)" }/{ "license" : "BSD-3-Clause" }/{ "license" : "SEE LICENSE IN <filename>" }

如果您不希望以任何条款授予他人使用私有或未发布软件包的权利:

{ "license": "UNLICENSED" }

3.main

main字段指定了加载的入口文件,require(‘moduleName’)就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。

4.Config

object

Config对象中的值在Scripts的整个周期中皆可用,专门用于给Scripts提供配置参数。

5.Keywords

字符串数组。人们使用 npm search 搜索时发现你的项目

6.Description

必须是字符串。npm search的时候会用到。

7.Bin

bin项用来指定各个内部命令对应的可执行文件的位置。很多的包都会有执行文件需要安装到PATH中去。

这个字段对应的是一个Map,每个元素对应一个{ 命令名:文件名 }。

{ "bin" : { "npm" : "./cli.js" } }

8.Engines

engines字段指明了该模块运行的平台,比如 Node 的某个版本或者浏览器

既可以指定node版本:

{ "engines" : {"node" : ">=0.10.3 <0.12" } }

也可以指定npm版本:

{ "engines" : {"npm" : "~1.0.20" } }

以上只是总结一部分以及常用的字段,详细信息鉴于npm官网:http://caibaojian.com/npm/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容