NodeJs基础之NRM与NPM

news2024/10/6 12:34:37

nrm

nrm can help you easy and fast switch between different npm registries, now include: npm, cnpm, taobao, nj(nodejitsu).

译文:nrm可以帮助您在不同的npm注册表之间轻松快速地切换,现在包括:npm、cnpm、taobao、nj(nodejitsu)。

github地址:https://github.com/Pana/nrm

更多精彩内容,请微信搜索“前端爱好者戳我 查看

NRM 安装

NRM 常用命令

Nodejs 案例 – 创建一个本地服务器

var http = require('http');
 
var app = http.createServer((req, res) => {
 
    res.write('hello world!');
 
    res.end()
})
 
app.listen(3000,()=>{
    console.log('服务器已启动')
})

NPM

NPM 是JavaScript 的包管理工具,是 Nodejs 平台的默认包管理工具也是世界上最大的软件注册表,里面包含了 60 万个包结构。

NPM 的组成

  • 网站 https://www.npmjs.com/
  • 注册表( registry )
  • 命令行工具( CLI )

NRM 常用命令

  1. npm -v:查看npm版本。
  2. npm init:初始化后会出现一个package.json配置文件。可以在后面加上-y ,快速跳过问答式界面。
  3. npm install:会根据项目中的package.json文件自动下载项目所需的全部依赖。
  4. npm install 包名 --save-dev(npm install 包名
    -D):安装的包只用于开发环境,不用于生产环境,会出现在package.json文件中的devDependencies属性中。
  5. npm install 包名 --save(npm install 包名
    -S):安装的包需要发布到生产环境的,会出现在package.json文件中的dependencies属性中。
  6. npm list:查看当前目录下已安装的node包。
  7. npm list -g:查看全局已经安装过的node包。
  8. npm --help:查看npm帮助命令。
  9. npm update 包名:更新指定包。
  10. npm uninstall 包名:卸载指定包。
  11. npm config list:查看配置信息。
  12. npm 指定命令 --help:查看指定命令的帮助。
  13. npm info 指定包名:查看远程npm上指定包的所有版本信息。
  14. npm config set registry https://registry.npm.taobao.org:
    修改包下载源,此例修改为了淘宝镜像。
  15. npm root:查看当前包的安装路径。
  16. npm root -g:查看全局的包的安装路径。
  17. npm ls 包名:查看本地安装的指定包及版本信息,没有显示empty。
  18. npm ls 包名 -g:查看全局安装的指定包及版本信息,没有显示empty。

初始化 – package.json

{
  "name": "demo", // 项目名称
  "version": "1.0.0", // version是版本(遵守"大版本.次要版本.小版本"的格式)
  "description": "", // description描述你的模块,或者搜索
  "main": "index.js", // main字段指定了加载的入口文件
  "scripts": { // scripts指定了运行脚本命令的npm命令行缩写,比比如start指定了运行npm run start时,所要执行的命令。
    "test": "echo hello world"
  },
  "repository": { //repository(仓库)指定一个代码存放地址
    "type": "git",
    "url": "git+https://github.com/XXXX"
  },
  "keywords": [],
  "author": "", // 作者
  "keywords": [  // 一个字符串数组,方便别人搜索到本模块
  "vue","iview"
  ],
  "license": "ISC", 
  "devDependencies": {  // devDependencies指定项目开发所需要的模块
    "babel-core": "^6.23.1", 
    "webpack": "^1.13.2"
  }, 
  "dependencies": {  // dependencies字段指定了项目运行所依赖的模块
    "underscore": "^1.8.3",
    "vue": "^2.1.4"
  }
}

NPM 的热部署

热部署,不用每次进行部署,实现动态调试。

在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止Node.js 再重新运行才会奏效。

这是因为 Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入。

Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。

这时若你修改了js文件,或是调试功能,或是增加功能。

这时需要重新发布该服务,每次修改都需要执行以下两步:

  • control+c
  • node server.js

很不爽!因此有人开发了一个自动发布(热发布)的工具,你只需要在修改文件后保存,它就能自动替你发布,这就是所谓的热部署。

就像tomcat或websphere等一些主流的web应用服务器那样保存即热部署。

热部署的包很多,有supervisor,hotnode,nodemon等。

nodemon

nodemon 是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序。

官网地址:https://nodemon.io/

nodemon 特性

  • 自动重新启动应用程序。
  • 检测要监视的默认文件扩展名。
  • 默认支持 node,但易于运行任何可执行文件,如 python、ruby、make 等。
  • 忽略特定的文件或目录。
  • 监视特定目录。
  • 使用服务器应用程序或一次性运行实用程序和 REPL。
  • 可通过 Node require 语句编写脚本。
  • 开源,在 github 上可用。

安装

全局安装

$ npm i -g nodemon

本地安装

$ npm i -D nodemon

注意:本地安装需要在 package.json 文件的 script 脚本中指定要需要执行的命令

{
  "script": {
    "dev": "nodemon app.js"
  }
}

使用 npm dev 运行

使用

nodemon 一般只在开发时使用,它最大的长处在于 watch 功能,一旦文件发生变化,就自动重启进程。

# 默认监视当前目录的文件变化
$ nodemon app.js

# 指定主机和端口作为参数,表示在本地 3697 端口启动 node 服务 
$ nodemon app.js localhost 3697

更多详细内容,请查看:https://github.com/remy/nodemon

参考文档

  • https://www.cnblogs.com/benpaodexiaopangzi/p/5856642.html

前端爱好者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编译安装及yum安装

一、编译安装 源码包:是由程序员按照特定格式和语法编写的包 二进制包:源码包经过成功编译之后产生的包 1.tar -xf httpd-2.4.29.tar.bz #解压源码包 2.安装依赖环境 3.配置安装路径 4.编译make并安装 5.关闭防火墙,和安全机制 6.开启服务器 7.…

全电发票时代,记账凭证不用再打印了!

—政策通告— 为进一步推进电子发票应用和推广实施工作,助力国家数字经济发展,国家档案局会同财政部、商务部、国家税务总局总结三批增值税电子发票电子化报销、入账、归档试点经验,依据国家相关法律法规和标准规范,编制形成了《…

KMP匹配算法

目录 一、暴力匹配法动画演示代码实现 二、KMP算法的概念三、KMP算法的应用题目代码实现 一、暴力匹配法 动画演示 时间复杂度为&#xff1a; O ( m ∗ n ) O(m * n) O(m∗n) 代码实现 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;int…

Revit API:ErrorHandling

前言 本文介绍 Revit 的错误处理机制。 内容 程序员对错误处理的定义和理解 程序的错误处理机制可以分为两种类型&#xff1a;错误返回码和异常捕捉。 错误返回码是指在程序中遇到错误时&#xff0c;通过函数返回值来表明错误的类型和信息。错误返回码可以在程序中被预测和…

分段存储管理方式

目录 一、分段存储管理方式的引入的需求: 1.方便编程 2.信息共享 3.信息保护 4.动态增长 5.动态链接 二、分段系统的基本原理 1.分段 2.段表 3.地址变换机构 4.分页与分段的主要区别 三、信息共享 四、段页式存储管理方式 1.基本原理 2.地址变换过程 分段与分页…

Spring实现IOC和DI入门案例(XML版)

文章目录 1 IOC入门案例(XML版)1.1 思路分析1.2 代码实现步骤1:创建Maven项目步骤2:添加Spring的依赖jar包步骤3:添加案例中需要的类步骤4:添加spring配置文件步骤5:在配置文件中完成bean的配置步骤6:获取IOC容器步骤7:从容器中获取对象进行方法调用步骤8:运行程序 2 DI入门案例…

AltTab for Mac 像Windows一样的窗口快速切换工具

AltTab for Mac AltTab for Mac 是一款非常好用的窗口快速切换工具&#xff0c;AltTab将Windows的 “Alt-Tab” 窗口切换器的功能引入到了macOS。可以让您更快的在各个程序之间自由切换&#xff0c;大大提高您的工作效率。 AltTab for Mac下载 AltTab for Mac AltTab for Ma…

哈工大软件过程与工具作业2

云原生技术云原生技术 哈尔滨工业大学 计算机科学与技术学院/国家示范性软件学院 2022年秋季学期 《软件过程与工具》课程 作业报告 作业 2&#xff1a;需求分析UML建模 姓名 学号 联系方式 石卓凡 120L021011 944613709qq.com/18974330318 目 录 1 需求概述...........…

Vue3——简易版个人空间(上半部分)

创建项目 使用vue 的图形化界面创建一个新的vue3项目如下图所示 装两个新的插件——router和vuex插件 该过程的可能有点久&#xff0c;需要耐心等待。 再装一些需要的依赖 需要用到的依赖: boostrap和poperjs/core&#xff08;bootstrap是提供给不会做美工的程序员的一个新的…

物联网|uart串口相关寄存器|波特率设置及计算|发送处理代码|串口接收中断处理函数|物联网之蓝牙4.0 BLE基础-学习笔记(7)

文章目录 13 uart串口基础开发基本电路图&#xff1a;实验相关寄存器波特率设置及计算计算过程&#xff1a;设置中断发送处理代码串口接收中断处理函数main.c 13 uart串口基础开发 基本电路图&#xff1a; 实验相关寄存器 相关寄存器UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLK…

大厂设计师青睐的十大设计网站

设计绝对是薪酬差距最大的职业之一&#xff0c;有些人年薪100万&#xff0c;有些人月薪3000。 你有没有想过普通人和高薪设计师之间的差距在哪里&#xff1f; 在这篇文章中&#xff0c;我们将解密大厂设计师青睐的十大设计网站。让我们看看&#xff01; 1.即时设计 即时设计…

眺望高阶智能驾驶的远方,北醒驶入新“平台”

从4月到5月&#xff0c;关于2023上海国际车展的话题热度始终不减。 这次车展既让外界感受到了车企们的“卷”&#xff0c;也把智能汽车产业发展的蓝图更加清晰地呈现了出来——智能汽车正在进入产业布局的关键期&#xff0c;产业链上下游发展不断提速。 作为推动汽车产业的“…

基于边缘的图像分割

文章目录 基于边缘的图像分割基本原理常用的算法实现步骤示例代码结论 基于边缘的图像分割 基于边缘的图像分割是数字图像处理中常用的一种方法&#xff0c;它通过检测图像中的边缘信息来实现图像的分割。边缘通常代表着图像中不同区域之间的边界或目标的轮廓&#xff0c;因此…

Java 8 腰斩,Java 17 暴涨 430% (文末惊喜福利)

文末送出惊喜赠书福利一份&#xff0c;绝对high到爆&#xff01; 预约视频号&#xff1a;《Java核心技术》新书发布会暨"Java核心技术大会2023"启动仪式 New Relic 最新发布了一份 “2023 年 Java 生态系统状况报告”&#xff0c;旨在提供有关当今 Java 生态系统状态…

51单片机(十六)AD/DA

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

罗马斗兽场在古罗马时期为什么这么流行,它对罗马有何影响?

在古罗马时期&#xff0c;斗兽场可谓是当时的一大热门娱乐场所。为何斗兽场如此受欢迎&#xff0c;它又如何影响了罗马社会呢&#xff1f; 斗兽场是古罗马人民的一种独特的娱乐形式。无论贵族、平民还是奴隶&#xff0c;他们都喜欢观看这种刺激的竞技。 有人认为&#xff0c;斗…

弹性盒子的属性

display&#xff1a;指定元素使用弹性盒子布局&#xff0c;属性值为 flex 或 inline-flex。 flex-direction&#xff1a;指定弹性盒子主轴的方向&#xff0c;属性值可以是 row&#xff08;默认值&#xff0c;主轴为水平方向&#xff09;、row-reverse&#xff08;主轴为水平方…

第11章:约束

一、数据完整性与约束的分类 1.为什么需要约束constraint SQL以约束方式对表数据进行额外的条件限制。 为了保证数据的完整性&#xff0c;SQL对表数据进行条件限制 ①实体完整性&#xff1a;同一个表&#xff0c;不能存在两条相同无法区分的记录 ②域完整性&#xff1a;年…

【数据结构】入门及时间空间复杂度的介绍

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;数据结构与算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 1.什么是数据结构&#xff1f; 2.什么是算法&#xff1f; 3.数据结构和算法的重要性 4.常见的数…

【杂记】Rest风格

文章目录 1.什么是Rest&#xff1f;2.URI URL URN3.什么是Restful架构风格4.状态转换 1.什么是Rest&#xff1f; Rest是一种软件架构的风格。 英文名称&#xff1a;REpresentational State Transfer&#xff08;表现层状态转移&#xff09; 加上主语&#xff1a;Resource Repr…