Node.js:项目中的 package.json 格式

1. node.js 项目包下的 package.json :

实例:

{
	"name"          : "chatroooms",
	"version"       : "0.0.1",
	"description"   : "Minimalist multiroom chat server",
	"dependencies"  : {
		"socket.io" : "~0.9.6",
		"mime"      : "~1.2.7"
	}
}

或者

{
	"name"          : "learn-nodejs",
	"version"       : "0.0.1",
	"description"   : "This is my learning package",
	"license"       : "SEE LICENSE IN license.txt",
	"repository"    : {
		"type"      : "git",
		"url"       : "https://github.com/npm/npm.git"
	},
	"dependencies"  : {
		"socket.io" : "~0.9.6",
		"mime"      : "~1.2.7"
	}
}

一般 name, version, description, license 和 repository 是必须写的。更全的一点的还有:

{
  "name": "module-name",
  "version": "10.3.1",
  "description": "An example module to illustrate the usage of a package.json",
  "author": "Your Name <you.name@example.org>",
  "contributors": [{
  "name": "Foo Bar",
  "email": "foo.bar@example.com"
}],
  "bin": {
  "module-name": "./bin/module-name"
},
  "scripts": {
    "test": "vows --spec --isolate",
    "start": "node index.js",
    "predeploy": "echo im about to deploy",
    "postdeploy": "echo ive deployed",
    "prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
  },
  "main": "lib/foo.js",
  "repository": {
  "type": "git",
  "url": "https://github.com/nodejitsu/browsenpm.org"
},
  "bugs": {
  "url": "https://github.com/nodejitsu/browsenpm.org/issues"
},
  "keywords": [
  "nodejitsu",
  "example",
  "browsenpm"
],
  "dependencies": {
    "primus": "*",
    "async": "~0.8.0",
    "express": "4.2.x",
    "winston": "git://github.com/flatiron/winston#master",
    "bigpipe": "bigpipe/pagelet",
    "plates": "https://github.com/flatiron/plates/tarball/master"
  },
  "devDependencies": {
    "vows": "^0.7.0",
    "assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
    "pre-commit": "*"
  },
  "preferGlobal": true,
  "private": true,
  "publishConfig": {
  "registry": "https://your-private-hosted-npm.registry.nodejitsu.com"
},
  "subdomain": "foobar",
  "analyze": true,
  "license": "MIT"
}

更多关于package.json的解释,可以参考npm官网说明:https://docs.npmjs.com/files/package.json

 

2. node.js 既然是依靠google V8引擎驱动的,而chrome浏览器内置了V8,所以就诞生了 node-webkit 这样的项目.

它的执行宿主也是 浏览器,但是由于 node.js 的支持,我们可以轻松访问当前执行环境的OS ,这不就是PC 客户端程序的功能吗.

可见 node-webkit 项目利用了web UI 的优势,node.js 访问本地OS 的优势,从而用 javascript 实现了一个本地 客户端程序.

今天我们首先来看下一个简单的 node-webkit 项目中 package.json 中,各项所代表的意义.

实例:

{
  "name": "ServerManage",
  "main": "index.html",
  "nodejs": true,
  "window": {
    "title": "Server Manage",
    "toolbar": false,
    "width": 480,
    "height": 350,
    "resizable": true,
    "show_in_taskbar": true,
    "frame": true,
    "kiosk": false,
    "position": "center"
  },
  "webkit": {
    "plugin": true
  },
  "chromium-args": "--enable-threaded-compositing"
}

必填字段

main node-webkit打开时的默认页面

name  包的名字,必须为独一无二的,可由字母,数字,下划线组成,不能有空格

功能性字段

nodejs node-webkit中是否启用 node.js (布尔值)

node-main node-webkit打开时的加载的node.js文件
可通过process.mainModule访问

window  控制窗口的样子,后文细讲。

webkit  控制webkit特性是否启用,后文细讲。

窗口字段

title 默认打开的窗口页面的title

toolbar 是否显示工具栏,地址栏等(布尔值)

icon 此应用图标的路径地址

position 只可能是这么几个值null center mouse。null指无定位,center指在显示器中间,mouse指在鼠标的位置。

min_width/min_height (整形)定义宽度和高度的最小值。

resizable  窗口是否可调整大小 (布尔值)

always-on-top 窗口是否总是置顶状态(布尔值)

fullscreen  打开时是否全屏(默认是否全屏打开)

frame 是否显示窗口框架 (布尔值) 不显示将无法拖动

show 是否在任务栏上显示 (布尔值)

kiosk 是否处于kiosk状态,在kiosk状态下将全屏并且阻止用户关闭窗口(布尔值)

参考:node-webkit 项目中的 package.json 格式

 

本文:Node.js:项目中的 package.json 格式