一、环境安装

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详解的更多相关文章

  1. Javascript模块化开发2——Gruntfile.js详解

    一.grunt模块简介 grunt插件,是一种npm环境下的自动化工具.对于需要反复重复的任务,例如压缩.编译.单元测试.linting等,自动化工具可以减轻你的劳动,简化你的工作.grunt模块根据 ...

  2. (译)package.json详解

    原文链接 概述 本文囊括了所有package.json文件中你需要知道的细节.注意package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量.该文件描述的很多行为都受np ...

  3. VSCode插件开发全攻略(三)package.json详解

    更多文章请戳VSCode插件开发全攻略系列目录导航. package.json 在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先 ...

  4. React package.json详解

    概述: 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件 ...

  5. package.json详解

    1.概念 Node.js项目遵循模块化的架构,当我们创建了一个Node.js项目,意味着创建了一个模块,这个模块的描述文件,被称为package.json 亦即:模块的描述文件 = package.j ...

  6. package.json详解以及package-lock.json的作用

    一.创建 package.json输入如下命令之后,会要求填写基本的配置信息,这里,我们选择一路回车即可,待生成 package.json 文件之后,再来配置. npm init 二.配置 packa ...

  7. npm中package.json详解

    通常我们使用npm init命令来创建一个npm程序时,会自动生成一个package.json文件.package.json文件会描述这个NPM包的所有相关信息,包括作者.简介.包依赖.构建等信息,格 ...

  8. package.json 详解

    使用package.json  属性说明 name - 包名. version - 包的版本号. description - 包的描述. homepage - 包的官网 url . author - ...

  9. vue package.json 详解

    示例: { "name": "scrm", "version": "0.1.0", "private" ...

随机推荐

  1. CCPC 2019 秦皇岛 Angle Beats

    题目 给出P个点,然后给出Q个询问,问从P中选出两个点和给的点能组成直角三角形的方法个数.-O2,时间限制5秒. \[2\leqslant P\leqslant 2000,\qquad 1\leqsl ...

  2. [考试反思]1113csp-s模拟测试113:一念

    在这么考下去可以去混女队了2333 两天总分rank14,退役稳稳的 的确就是没状态.满脑子都是<包围保卫王国>ddp/LCT/ST,没好好考试. 我太菜了写题也写不出来考试也考不好(显然 ...

  3. Linux平台安装python的psutil包

    在Linux平台下,pip install psutil 安装python psutil包,出现下面的错误: psutil/_psutil_common.c:9:20: fatal error: Py ...

  4. MFC图形编辑界面工具

    一.背景 喔,五天的实训终于结束了,学校安排的这次实训课名称叫高级程序设计实训,但在我看来,主要是学习了Visual C++ .NET所提供的MFC(Microsoft Foundation Clas ...

  5. SpringCloud的入门学习之概念理解、Config配置中心

    1.SpringCloud Config分布式配置中心.分布式系统面临的配置问题. 答:微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于每个 ...

  6. GO基础之切片

    一.什么是切片 Go语言切片是对数组的抽象. Go数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"): 与数组相比切 ...

  7. Ling to sql 多表查询,多个条件进行关联

    使用多表查询进行关联时,提示 join子句中其中一个表达式的类型不正确,注意字段类型和名称要一致,否则join时提示语法错误,错误截图如下 var incomeDetails = from a in ...

  8. 如何制作gif图片?教你把gif图片缩小100倍大小的妙招!

    移动互联网是短视频的时代,5G的到来更是让短视频蓬勃发展,视频的发展让人们看到了动态的机会,图片也需要动起来,图片动起来应该是比较早的,gif图片很早就有,我们常见的动态表情,现在用的比较多的是视频的 ...

  9. 使用adb命令操控Android手机(adb命令)

    1) 手机连接电脑之前 首先,查看安卓手机是否已经连接上电脑 adb devices 让adb一直查找安卓设备,找到后才停止 adb wait-for-device 2) 手机连接电脑后的操作 2.0 ...

  10. Scrapy对接Selenium

    首先pip安装selenium,然后下载浏览器驱动 WebDrive下载地址 chrome的webdriver:http://chromedriver.storage.googleapis.com/i ...