node自定义包、npm和yarn的使用

一、node包

JS模块的基本单位是单个JS文件,但复杂些的模块往往由多个子模块组成,为了便于管理和使用,把由多个子模块组成的叫做包

组成一个包的所有模块中,需要一个入口模块,入口模块的导出对象被作为包的导出对象。入口模块在package.json中指定。

二、CommonJS规范的包

完全符合CommonJS规范的包应该包含如下这些文件:

1.package.json 包描述文件

2.bin 用于存放可执行的二进制文件的目录

3.lib 用于存放JavaScript代码的目录

4.doc 用于存放文档的目录

5.test 用于存放单元测试用例的代码

NodeJS对包要求没有那么严格,只要顶层目录下有package.json,并符合基本规范即可

三、package.json

name:包的名称,必须是唯一
main: 指定了程序的主入口文件
version:符合语义化版本识别规范的版本字符串
description:包的简要说明
keywords:关键字数据,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email、web可选字段
contributors:贡献者数组,格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素
bugs:提交bug的地址,可以是网址或者电子邮件地址
licenses:许可证数组,每个元素要包含type和url字段
repositories:仓库托管地址数组,每个元素要包含type、url和path字段
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
devDependencies:开发依赖项,表示一个包在开发期间用到的依赖项

注意:

pacakge.json文件必须包含如下三个属性:name,version,main

如果package.json或main字段不存在,则会尝试在包的顶级目录寻找index.js作为包的接口

四、自定义包

目录结构:

add.js

function add(a, b) {
    return a + b;
}
module.exports = add;

sub.js

function sub(a, b) {
    return a - b;
}
module.exports = sub;

main.js

const add = require('./add');
const sub = require('./sub');

module.exports = {
    add,
    sub
}

package.json

{
  "name": "calc",
  "main": "./lib/main.js"
}

五、使用自定义包

calctest.js

const calc = require('./calc');

console.log(calc.add(1,2));

结果:

使用node运行js代码

六、npm的使用

npm是随NodeJS一起安装的包管理工具

1.查看npm版本

npm -v

2.初始化包

npm init 创建包,package.json文件是必不可少的,我们可以使用npm init生成package.json文件

npm init -y 快速创建包

生成的package.json如下:

3.安装包

npm install 安装package.json指定的所有依赖

npm install <package> 本地安装,将安装包放在./node_modules下(运行npm命令所在的目录),如果没有node_modules目录,会在当前执行npm命令的目录下生成node_modules目录

可以通过require()来引入本地安装的包

npm install <package> --save 安装到生产依赖,会把依赖包名称添加到package.json文件dependencies下

npm install <package> --save-dev 安装到开发依赖,会把依赖包名称添加到package.json文件devDependencies下

npm install <package>@<version> 下载指定版本的包 

npm install <package> -g 全局安装安装,将安装包放在node的安装目录的lib下的node_modules下

34查看包安装信息

npm list  -g 查看所有全部安装的包

npm list <package> 查看某个包的版本号

5.卸载包

npm uninstall <package> 卸载包

6.更新包

npm update <package> 更新包

7.清空NPM本地缓存

npm cache clear 可以清空NPM本地缓存

8.执行脚本

npm run <scriptname> 执行pacakge.json配置的scripts对象,如:npm start,npm run test

9.package.json与package-lock.json的区别

当执行npm install的时候,node会先从package.json文件中读取所有dependencies的信息,然后根据dependencies的信息与node_modules中的模块进行对比,没有的直接下载,node是从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新

例如对于jquery的依赖:

package.json

  "dependencies": {
    "jquery": "^3.4.1"
  }

package-lock.json

  "dependencies": {
    "jquery": {
      "version": "3.4.1",
      "resolved": "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz",
      "integrity": "sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI="
    }
  }

yarn.lock

jquery@^3.4.1:
  version "3.4.1"
  resolved "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
  integrity sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI=

使用npm安装包会有package-lock.json

package.json的jquery版本^是定义向后(新)兼容依赖,如果jquery版本超过3.4.1,大版本上(3)上相同,就允许下载最新的包,package.json只能锁定大版本,即版本号的第一位,不能锁定后面的小版本

package-lock.json就是锁定具体版本号,使得jquery版本不会自动下载升级,如果要升级package-lock.json里面的包,npm install <package>@<version>。

使用yarn安装包会有yarn.lock

yarn.lock与package-lock.json都是用来锁定版本号

七、yarn的使用

npm安装包是顺序进行的,而yarn安装包的并行的;yarn安装有缓存,会直接从自己的缓存中拿到包。

npm install yarn -g 安装yarn

1.查看版本

npm init

yarn init

2.安装包

npm install

yarn 或 yarn install

npm install <package> --save

yarn add <package>

npm install <package> --save-dev

yarn add <package> --dev

3.移除包 

npm uninstall <package>

yarn remove <package>

4.更新包

npm update <package>

yarn upgrade <package>

5.执行脚本

npm run <scriptname>

yarn run <scriptname>

6.设置镜像的地址

npm config get registry 查看当前npm源

yarn config get registry 查看当前yarn源

npm config set registry <url> npm设置镜像地址,设置淘宝镜像npm config set registry https://registry.npm.taobao.org

yarn config set registry <url> yarn设置镜像地址

npm config delete registry npm删除镜像地址

yarn config delete registry yarn删除镜像地址

 

更多请阅读

node自定义包、npm和yarn的使用

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值