四、NPM包管理工具

一、NPM

  • Node Package Manager: npm.inc公司的一个,关于node 的包管理工具
  • npm第三方依赖
  • 随着node的安装,会一起安装在客户机上
  • npm -v可以查看对应的npm的版本

二、项目构建

1. 初始化

  • npm规定,在项目中必须有一个package.json来定义依赖的包,类似maven中的pom.xml
  • 创建空目录
  • npm init -y: 会在执行命令的目录下,创建一个package.json来管理,可以创建多个

package.json

{
  "name": "node_learn",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "lodash": "^4.17.21"
  }
}

2. 安装第三方包

  • npm install lodash
  • 会在项目根路径下,创建node_moudles模块,并将第三方包放进去
  • 修改对应的package.json,更新对应依赖
  • 创建pachage.lock.json文件,会详细定义具体的依赖的版本,组织等信息

在这里插入图片描述package.lock.json

{
  "name": "node_learn",
  "version": "1.0.0",
  "lockfileVersion": 2,
  "requires": true,
  "packages": {
    "": {
      "name": "node_learn",
      "version": "1.0.0",
      "license": "ISC",
      "dependencies": {
        "lodash": "^4.17.21"
      }
    },
    "node_modules/lodash": {
      "version": "4.17.21",
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
    }
  },
  "dependencies": {
    "lodash": {
      "version": "4.17.21",
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
    }
  }
}

3. 配置文件

项目代码

  • 不需要上传node_modules模块的代码,因为体积太大
  • 源代码拿到,直接 npm install 就会把配置文件中指定的第三方包下载到本地项目中
  • 有时候第三方包加载出现问题,可以直接删除node_modules,然后 npm install

4. DevDepenency/ Dependency

  • DevDepenency: 只会在开发时候用到,项目实际运行时候不需要
  • Dependency: 开发和运行时候都需要
  • npm install moment --save-dev
  • 如何判断: 去npm来看就可以了

三、镜像配置

  • 默认npm包是从海外服务器拉的

1. 直接修改npm参数

# npm 默认拉取地址
https://registry.npmjs.org/

# 使用淘宝镜像
npm config set registry https://registry.npm.taobao.org  

# 验证是否成功
npm config get registry

2. nrm

# 下载对应的工具
npm install -g nrm

# 查看哪些镜像可用
nrm ls

# 选择哪个镜像: 会将npm的registry参数修改
nrm use taobao

# 验证是否成功
npm config get registry

四、包分类

1. 项目包

  • 安装在项目中的node_modules模块下的包
  • 分为开发依赖时包和开发运行依赖包

2. 全局包

  • 安装到本地的node/npm/node_modules模块
  • 只有工具一类的包,才需要安装全局包
# 安装的时候提供    -g
# 卸载的指令       -g
npm install lodash -g

五、自定义包

1. 创建项目

  • name: 希望后面从npm官方仓库被搜索的名字,不能和npm上其他包名重复, 也是npm install时候的名字
  • main: 程序的入口文件,别人需要导入时候的文件
  • license: npm 遵循的协议
  • keywords: npm 中搜索的时候的关键字
# 在项目文件中,生成一个package.json
npm init -y

package.json

{
  "name": "erick_log",
  "version": "1.0.0",
  "description": "This is a demo project ",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": ["erick","nike"],
  "author": "Erick Shu",
  "license": "ISC"
}

2. 目录结构

在这里插入图片描述
cat.js

let name = 'cat';
let food = 'fish meat';

function play() {
    console.log('Cat Play with Fur Ball');
}

function eat() {
    console.log(`Cat eat ${food}`);
}

module.exports = {name, food, play, eat}

dog.js

let name = 'dog';
let food = 'pork meat';

function play() {
    console.log('Dog Love Swiming');
}

function eat() {
    console.log(`Dog eat ${food}`);
}

module.exports = {name, food, play, eat}

index.js

  • 一般情况,index.js作为程序入口,只是对外导出对应的文件
  • 尽可能少的涉及具体的业务逻辑
let info = 'This is introduction of this project';

let cat = require('./src/cat');
let dog = require('./src/dog');

module.exports = {
    info,
    cat,
    dog
}
/*本项目内引用*/
/*let data = require('./index');*/

/* 别人调用本项目中的程序入口  方式一:*/
/*let data = require('../erick_log/index')*/

/* 别人调用本项目中的程序入口  方式二:*/
/* 只传递文件夹,就回根据package中的main属性,去找当前目录的,对应的那个文件*/
/*let data = require('../erick_log')*/

let index = require('./index');

console.log(index.info)
console.log(index.dog.name);

3. npm包发布

3.1 注册npm
  • 需要注册对应的npm账户,然后发布项目
3.2 终端
  • 必须切换到npm官方的包地址,不能使用镜像
# 1. 根据第一步注册的账号,进行登陆
npm login

# 2.  切换到项目所在目录, 发布项目
npm publish 

# 3. 删除已经发布的包
# 3.1 只能发布 72h内发布的包
# 3.2 删除的包,在24h内不允许再次发布
npm unpublish 包名 --force

六、热部署

  • 热部署,不用每次进行部署
  • webstorm中,编辑完文件后,可以通过 ctrl+来手动触发热部署
npm install -g nodemon

# 执行对应的js
nodemon index.js

七、 npm指令

# 开始: 会在执行命令的目录下,创建一个package.json来管理
npm init -y

# 安装: 指定版本,多个同时安装
npm install lodash
npm i lodash
npm i lodash@4.17.17
npm install lodash moment

#一次性加载: node_moudle和项目package.json 不匹配时,运行会更新
#当删除node_moudle目录时候,运行就会在项目中下载对应的包
#一般node_moudle会占项目的90%的大小
npm install
npm i

# 全局操作
npm install lodash -g
npm uninstall lodash -g

# 卸载
npm uninstall lodash
npm uni lodash

# 只有开发时需要的依赖, 卸载时候的语法同上
# -D 和具体包名顺序可颠倒
npm install moment --save-dev
npm install moment -D


# 2. 检查当前项目软件哪些依赖已经过时
npm outdated

# 查看当前npm拉取地址
npm config get registry
https://registry.npmjs.org/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值