Javascript模块化开发1——package.json详解

1、环境安装

Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/
在该页面你能够根据不一样平台系统选择你须要的 Node.js 安装包。
Node.js里面集成了npm,npm是一种包管理工具,容许用户从NPM服务器下载别人编写的包或命令行程序并分享本身编写的包或命令行程序。node

2、建立模块

输入命令npm init后根据提示输入相关信息,如名称,描述,版本等,将会建立一个初始的package.json。
接着能够编辑相关属性来定义该模块,大多数的属性都很直观,下面只挑几个进行说明:git

1.name

项目/模块名称。
命名规范以下:github

  • 名称能够前缀scope标识,如@myorg/mypackage。
  • 名字也将做为require()命令的参数,因此应该尽可能简明,长度必须小于等于214个字符。
  • 名字将会被做为url的一部分,全部要符合http url的通常命名规则,不能包含url非法字符,也不能以"."(点)或者"_"(下划线)开头。
  • 不能包含大写字母。
  • 名字里不要再包含"js"和"node",且不要用和核心Node模块相同的名字。
  • 若是包要发布到NPM平台上的话,最好先访问https://www.npmjs.com/检查下有没有重名。

2.repository

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

"repository": {
  "type": "git",
  "url": "https://github.com/***.git"
}
"repository": {
  "type": "svn",
  "url": "https://***"
}

3.private

设为true这个包将不会发布到NPM平台下。若是不设置repository,则应该设置private为true。json

4.files

包所包含的全部文件,能够取值为文件夹。
一般咱们仍是用.npmignore来去除不想包含到包里的文件。
无论如何设置,有些文件会永远都包含在包里:服务器

package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
main里包含的文件app

无论如何设置,有些文件会永远都不能包含在包里:svn

.git
CVS
.svn
.hg
.lock-wscript
.wafpickle-N
..swp
.DS_Store
._

npm-debug.log
.npmrc
node_modules
config.gypi
*.orig
package-lock.jsongrunt

5.main

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

6.browser

定义 npm 包在 browser 环境下的入口文件

7.Bin

bin项用来指定各个内部命令对应的可执行文件的位置。不少的包都会有执行文件须要安装到PATH中去。
这个字段对应的是一个Map,每一个元素对应一个{ 命令名:文件名 },例如:

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

在安装第三方带有bin字段的npm,那可执行文件会被连接到当前项目的./node_modules/.bin中
可经过命令行node node_modules/.bin/myapp执行相关js文件

8.config

能够用来添加命令行的环境变量,例如:

{
  "name" : "test",
  "config" : { "msg" : "hello" },
  "scripts" : { "start" : "node index.js" }
}

在 index.js 中,咱们能够直接使用该环境变量:

console.log(process.env.npm_package_config_msg);

9.dependencies

指定运行时依赖的包。

10.devDependencies

指定开发时依赖的包。

11.peerDependencies

若是你的包是插件,而用户在使用你的包时候,一般也会须要这些依赖(插件),那么能够将依赖列到这里。

12.bundledDependencies

绑定的依赖包,发布的时候这些绑定包也会被一同发布。

13.optionalDependencies

可选的依赖,即便这些依赖没有,也能够正常安装使用。

14.scripts

定义可被npm run command执行的全部命令,能够经过输入npm run查看全部的命令列表。
好比下面定义了运行 npm run start和npm run stop时,所要执行的命令。在cmd下输入命令npm run start至关于输入命令node start.js"

"scripts": {
  "start": "node start.js",
  "stop": "node stop.js",
}

scripts命令具备如下特性:

  • 执行npm run command时,会先安装devDependencies中所定义的依赖的包,再运行command所定义的命令。
    例如:
"scripts": {
  "build": "npm install && grunt"
}

运行npm run build会先安装devDependencies中定义的一些模块,而后再运行npm install和grunt。

  • 支持生命周期钩子
    npm支持pre- 和 post-两种钩子,前者是在脚本运行前,后者是在脚本运行后执行。全部的命令脚本均可以使用钩子(包括自定义的脚本)。
    好比运行npm run build,会按如下顺序执行:
    npm run prebuild -> npm run build -> npm run postbuild
  • npm提供了一些针对当前包的内置命令,并设置相关的默认行为。这些默认行为能够在scripts中改写其行为。 相关的内置命令有: npm start: npm run start的简写,若是不在script中配置start,那么npm start默认执行node server.js npm stop: npm run stop的简写,执行自定义stop脚本,没有默认行为。 npm restart: npm run stop&&npm run restart&&npm run start的简写。 npm test ,npm run test的简写,执行自定义test脚本,没有默认行为。
相关文章
相关标签/搜索