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

摘要:
1、 环境安装Node.js安装包和源代码下载地址为:在此页面上,您可以根据不同的平台系统选择所需的Node.js软件包。允许用户从NPM服务器下载其他人编写的软件包或命令行程序,并共享自己的软件包和命令行程序。名称中不要包含“js”和“node”。//***"} 3. 私有设置为true的包将不会发布到NPM平台。
一、环境安装

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

二、创建模块

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

1.name

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

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

2.repository

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

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

3.private

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

4.files

包所包含的所有文件,可以取值为文件夹。
通常我们还是用.npmignore来去除不想包含到包里的文件。
不管如何设置,有些文件会永远都包含在包里:

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

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

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

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

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脚本,没有默认行为。

免责声明:文章转载自《Javascript模块化开发1——package.json详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇eclipse里面有2个空格设置最近使用 .NET Core 遇到的一些坑下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux 下 SSH 命令实例指南

如果你已经在IT圈内混久了, 应该对 SSH 这个了不起的工具及其安全特性有所耳闻吧. 本教程可以让你在短时间内掌握通过 SSH 安全便利地连接到远程计算机的技术. 如果你对 SSH 还没什么概念, 可以先访问 维基百科 进行了解. 基本用法 最简单的 SSH 命令只需要指定用户名和主机名参数即可. 主机名可以是 IP 地址或者域名. 命令格式如下:...

docker基础---数据卷volumes

1、数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在,直到没有容器使用 *数据卷的使用,类似于 Linux 下对目录或文件进行 mount。 1.1 创建一个数据卷 在用 docker run 命令的时候...

SpringCloud 配置文件 application.yml和 bootstrap.yml区别

SpringCloud 配置文件 application.yml和 bootstrap.yml区别 bootstrap.yml 先于 application.yml 加载,也就是比application.yml先加载 bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用bootst...

js打印隐藏的div,可自定义样式

这里是全部代码,可以直接运行。js需要自行导入 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/...

c#FileStream文件读写

//C#文件流写文件,默认追加FileMode.Append             string msg = "okffffffffffffffff";            byte[] myByte = System.Text.Encoding.UTF8.GetBytes(msg);            using (FileStream fsWr...

同步加载、异步加载、延迟加载

同步加载、异步加载、延迟加载 一、同步加载  平常默认用的都是同步加载。如:<script src="http://t.zoukankan.com/http://yourdomain.com/script.js"></script>   同步模式又称阻塞模式,会阻止浏览器的后续处理,停止了后续的文件的解析,执行,如图像的渲染。流览...