前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >package.json

package.json

作者头像
奋飛
发布2019-08-15 10:16:37
7220
发布2019-08-15 10:16:37
举报
文章被收录于专栏:Super 前端Super 前端

每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

package.json文件可以手工编写,也可以使用npm init命令自动生成。

注意:npm init 时,用户需回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。

一、scripts

scripts指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。 下面的设置指定了npm run preinstall、npm run postinstall、npm run start、npm run test时,所要执行的命令。

代码语言:javascript
复制
"scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
}

二、dependencies,devDependencies

dependencies和devDependencies两项,分别指定了项目运行所依赖的模块、项目开发所需要的模块。

代码语言:javascript
复制
npm install express --save
npm install express --save-dev

--save参数表示将该模块写入dependencies属性, --save-dev表示将该模块写入devDependencies属性。

三、bin

bin项用来指定各个内部命令对应的可执行文件的位置。

代码语言:javascript
复制
"bin": {
  "someTool": "./bin/someTool.js"
}

上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js。Npm会寻找这个文件,在node_modules/.bin/目录下建立符号链接。在上面的例子中,someTool.js会建立符号链接npm_modules/.bin/someTool。由于node_modules/.bin/目录会在运行时加入系统的PATH变量,因此在运行npm时,就可以不带路径,直接通过命令来调用这些脚本。

四、config

config字段用于向环境变量输出值。

代码语言:javascript
复制
{
  "name" : "foo",
  "config" : { "port" : "8080" },
  "scripts" : { "start" : "node server.js" }
}

然后,在server.js脚本就可以引用config字段的值。

代码语言:javascript
复制
http.createServer(...).listen(process.env.npm_package_config_port)

用户可以改变这个值。

代码语言:javascript
复制
$ npm config set foo:port 80

五、常用字段说明及示例

只用name和version必须的!!!

1. name:项目名,npm install依赖此名称!

注意: (1)name中不能包含汉子、空格、不能以点号或下划线开头; (2)不要在name中包含js, node字样; (3)这个名字可能在require()方法中被调用,所以应该尽可能短;

2. version:项目版本

注意:npm采用”语义版本“管理软件包。所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号,c是补丁号。

3. description:项目描述,npm search会用到

4. keywords:关键字,npm search会用到

5. homepage:项目官网的url

6. bugs:项目的提交问题的url和(或)邮件地址

代码语言:javascript
复制
{ 
	"url" : "http://github.com/owner/project/issues", 
	"email" : "project@hostname.com"
}

7. License:如果是使用一个普遍的license,比如BSD-3-Clause或MIT,直接使用:

代码语言:javascript
复制
{ "license" : "BSD-3-Clause" }

8. Author, contributors:author是一个人,contributors是一组人

代码语言:javascript
复制
{ 
	"name" : "Li Gang",
 	"email" : "ligang_WEB@163.com",
 	"url" : "http://blog.csdn.net/ligang2585116/"
}

8. files:项目中的文件的数组,以提供一个.npmignore文件,让即使被包含在files字段中得文件被留下。

9. repository:码存放的地方

10. Dependencies:当前包所依赖的其他包。

注意:请不要将测试或过渡性的依赖放在dependencies中

11. devDependencies:开发所需依赖的其他包。

注意:如果有人要用你的模块,但他们可能不需要你开发所使用的外部测试或者文档框架。

12. engines:指定工作的node的版本

代码语言:javascript
复制
{ "engines" : { "node" : ">=0.10.3 <0.12" } }

13. private:设置为true时,npm就不会发布它

注意:这是一个防止意外发布私有库的方式。如果你要确定给定的包是只发布在特定registry(如内部registry)的,用publishConfig hash的描述来重写registry的publish-time配置参数。

14. publishConfig:发布时使用的配置值,只有“tag”和“registry”与发布的意图有关。

完整的字段说明:http://www.mujiang.info/translation/npmjs/files/package.json.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年08月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、scripts
  • 二、dependencies,devDependencies
  • 三、bin
  • 四、config
  • 五、常用字段说明及示例
    • 1. name:项目名,npm install依赖此名称!
      • 2. version:项目版本
        • 3. description:项目描述,npm search会用到
          • 4. keywords:关键字,npm search会用到
            • 5. homepage:项目官网的url
              • 6. bugs:项目的提交问题的url和(或)邮件地址
                • 7. License:如果是使用一个普遍的license,比如BSD-3-Clause或MIT,直接使用:
                  • 8. Author, contributors:author是一个人,contributors是一组人
                    • 8. files:项目中的文件的数组,以提供一个.npmignore文件,让即使被包含在files字段中得文件被留下。
                      • 9. repository:码存放的地方
                        • 10. Dependencies:当前包所依赖的其他包。
                          • 11. devDependencies:开发所需依赖的其他包。
                            • 12. engines:指定工作的node的版本
                              • 13. private:设置为true时,npm就不会发布它
                                • 14. publishConfig:发布时使用的配置值,只有“tag”和“registry”与发布的意图有关。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档