npm包管理

一、背景说明

简单来说,npm是方便开发者下载和使用第三方库的前端包管理工具,它运行于nodejs环境,能支持用户快速进行下载、上传、更新等操作

二、包管理工具概述

1、概念

模块(module)

通常以单个文件形式存在的功能片段,入口文件通常称之为入口模块或主模块

库(library,简称lib)

以一个或多个模块组成的完整功能块,为开发中某一方面的问题提供完整的解决方案

包(package)

包含元数据的库,这些元数据包括:名称、描述、git主页、许可证协议、作者、依赖等等

三、npm相关操作

1、npm包安装

更改安装包来源:

安装(install)即下载包
由于 npm 的官方 registry 服务器位于国外,可能受网速影响导致下载缓慢或失败。因此,安装好 npm 之后,可以重新设置 registry 的地址为国内地址。目前,淘宝 https://registry.npm.taobao.org 提供了国内的 registry 地址,先设置到该地址。设置方式为npm config set registry https://registry.npm.taobao.org。设置好后,通过命令npm config get registry进行检查

安装分两种途径:

本地安装

全局安装

本地安装:

本地安装适用于绝大部分的包,安装后只在当前项目上生效

命令行使用npm install 包名称或npm i 包名称即可完成本地安装

本地安装的包出现在当前目录下的node_modules目录中

全局安装:

大部分情况下,都不需要进行全局安装,只有以下情况可以考虑:

1、包非常稳定,基本不需要进行更新;

2、提供的CLI工具在各个工程下使用非常普遍;

3、CLI工具仅为开发环境使用,在生产环境无需使用

使用命令行npm i -global 包名称 或者npm install -g 包名称即可完成下载

2、配置文件

npm将每个工程文件都看做一个包,通过工程文件package.json固定记录第三方包的依赖信息

配置文件信息如下:

name:包的名称,该名称必须是英文单词字符,支持连接符
version:版本
description:包的描述
homepage:官网地址
author:包的作者,必须是有效的 npm 账户名,书写规范是 account <mail>,例如:zhangsan <zhangsan@gmail.com>,不正确的账号和邮箱可能导致发布包时失败
repository:包的仓储地址,通常指 git 或 svn 的地址,它是一个对象
type:仓储类型,git 或 svn
url:地址
main:包的入口文件,使用包的人默认从该入口文件导入包的内容
keywords: 搜索关键字,发布包后,可以通过该数组中的关键字搜索到包

dependencies: 生产环境的依赖包

devDependencies:仅开发环境的依赖包

scripts:可以配置脚本命令,配置完成后,可以通过npm run 脚本名称来运行

初始化配置文件:

通过npm init 可以初始化一个package.json 文件,当然也可以手工创建(不推荐)

也可以通过npm init -y ,在初始化配置文件时,自动填充默认的配置

代码移植:

通过npm i 或者npm install ,在移植代码时,就无需移植node_modules下的文件,npm根据配置文件存储的依赖关系(包名、版本等)自动完成下载

刚才说到,配置文件可以区分生产和非生产的依赖包,具体命令行如下:

安装生产环境依赖:
npm install --save 包名称
npm install 包名称
npm install -S 包名称
安装开发环境依赖:

npm install --save-dev 包名称
npm install -D 包名称

3、npm脚本

如上所述,npm 也可以通过在scripts配置第三方包的脚本,然后通过npm run 脚本名称来运行指令

比如vue框架就可以配置如下命令:

不仅如此,npm 还对某些常用的脚本名称进行了简化,下面的脚本名称是不需要使用run的:

  • start
  • stop
  • test

一些细节:

  • 脚本中可以省略npx
  • start脚本有默认值:node server.js

4、运行环境配置

我们书写的代码一般有三种运行环境:

  1. 开发环境
  2. 生产环境
  3. 测试环境

有的时候,我们可能需要在 node 代码中根据不同的环境做出不同的处理

如何优雅的让 node 知道处于什么环境,是极其重要的

通常我们使用如下的处理方式:

node中有一个全局变量 global (可以类比浏览器环境的window),该变量是一个对象,对象中的所有属性均可以直接使用

global有一个属性是process,该属性是一个对象,包含了当前运行node程序的计算机的很多信息,其中有一个信息是env,是一个对象,包含了计算机中所有的系统变量

通常,我们通过系统变量 NODE_ENV 的值,来判定node程序处于何种环境

有两种方式设置 NODE_ENV 的值

永久设置
临时设置
我们一般使用临时设置

因此,我们可以配置 scripts 脚本,在设置好了 NODE_ENV 后启动程序

为了避免不同系统的设置方式的差异,可以使用第三方库 cross-env 对环境变量进行设置

5、在node中读取package.json

有的时候,我们可能在 package.json 中配置一些自定义的字段,这些字段需要在node中读取

在node 中,可以直接导入一个json格式的文件,它会自动将其转换为js对象

                        
原文链接:https://blog.csdn.net/qq_41499782/article/details/106973662

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值