npm

● npm 全称 Node Package Manager(node 包管理器),它的诞生是为了解决 Node 中第三方包共享的问题
● npm 不需要单独安装。在安装Node的时候,会连带自动安装npm。
● npm -v检查安装版本的情况。

当我们谈到npm时,我们在说两个东西:
● 命令行工具。这个工具在安装node时,已经自动安装过了,不需要额外安装。
● npm网站。这是一个第三方模块的"不花钱的模块超市",我们可以自由地下载,上传模块。

包(package)与模块关系

npm网站上去下载我们的需要的代码时,它们是以"包"这种结构放在npm网站上的。

● nodejs中一个模块就是一个单独的js文件
● Node.js 中的第三方模块,又叫做包、第三方包、依赖包
● 包是多个模块的集合。一个模块的功能比较单一,所以一个包一般会包含多个模块。
● npm 管理的单位是包。类似于网站和网页的区别:一个网站一般会包含多个网页。

npm下载使用包

分成三步骤:
● 初始化项目。npm init --yes如果之前已经初始化,则可以省略。
● 安装包。 npm install 包名。[注意:保持联网的状态哈]
● 引入包,使用

第一步:初始化项目

这里提到的项目并不是某个具体的功能,只是要创建一个空文件夹即可(注意,不要起中文名字哈)。
进入到项目所在的根目录下,启动小黑窗(建议:按下shift键,点击右键,在弹出的菜单中选择 “在此处打开命令行”)
初始化命令 : npm init --yes
输入如下命令:

npm init --yes
// --与yes之间没有空格, -- 与init之间有空格
// 或者是 npm init -y

init命令用来在根目录下生成一个package.json文件,这个文件中记录了我们当前项目的基本信息,它是一切工作的开始。

第二步:安装包

npm 这个超市中有现成的写好的代码,我们想下载来用,这个过程就是安装包,或者叫下包、装包

安装命令 : npm i 包名

第三步:使用包

当我们已经下载好一个包之后,就可以像使用核心模块一样去使用它。
格式是:const 常量名 = require(‘包名’) 这个格式与引入核心模块的格式是一样的。

安装包后的整体目录结构

project01
├── node_modules # 统一放置下载的包
│ └── dayjs # 某个包
├── xx.js # 业务代码, 引入dayjs来使用
├── package.json # 记录本项目的信息
└── package-lock.json # 下载包的详细信息

下载使用包的细节1-package.json

npm init 命令

在某个目录下开启小黑窗,输入如下命令:npm init
它会启动一个交互式的程序,让你填入一些关于本项目的信息,最后生成一个package.json文件。
如果你希望直接采用默认信息,可以使用 : npm init --yes或者是 npm init -y

说明:
● 这个命令只需要运行一次,它的目的仅仅是生成一个package.json文件。
● 如果项目根目录下已经有了package.json文件,就不需要再去运行这个命令了。
● 这个package.json文件后期是可以手动修改的。

package.json文件

它一般是由npm init命令创建出来的(也可以正常被CV),它的整体内容是一个json字符串,用来对当前项目进行整体描述。
其中最外层可以看作是一个js的对象(每一个属性名都加了"",这就是一个典型的json标记)。
这个文件中有非常多的内容,我们目前学习如下几个:
● name:表示这个项目的名字。
如是它是一个第三方包的话,它就决定了我们在require()时应该要写什么内容。
● version:版本号
● keywords:关键字
● author: 作者
● descrption: 描述

下载使用包的细节2-node_modules文件夹

作用
这个文件夹中保存着我们从npm中下载来的第三方包。在使用npm install 命令时,会从npm网站下载对应的包到这个文件夹中。

执行逻辑

当键入npm install XXX之后(这里假设这个XXX包是存在的,也没有出现任何的网络错误):

  1. 如果有package.json
    (1) 修改package.json文件。根据开发依赖和生产依赖的不同,决定把这句记录在加在devDependencies或者是dependencies列表中。
    (2) 修改node_modules文件夹
    a. 如果有node_modules文件夹,则直接在下面新建名为XXX的文件夹,并从npm中下来这个包。如果这个包还有其它的依赖,则也会下载下来。
    b. 如果没有node_modules,则先创建这个文件夹,再去下载相应的包
  2. 如果没有package.json。会给一个警告信息。

● 建议先用init命令创建package.json之后,再去install
● 在分享代码时,我们一般不需要把node_modules也给别人,只需要给package.json(就像你不需要把day.js给别人,因为他们可以自己去下载)。对方拿到我们的代码之后,先运行npm install(后面不接任何的包名),自己去安装这些个依赖包。

下载使用包整体回顾

修改镜像源

下包速度慢的原因:默认情况下,npm 从一个名为 https://registry.npmjs.org/ 的服务器上下包。这个服务器在国外,因此下包速度会非常慢。
解决方案:把 npm的下包地址,从国外的服务器切换为国内的服务器。
检查当前的下包地址:
npm config get registry
把下包的地址切换为国内的淘宝服务器
npm config set registry=https://registry.npm.taobao.org/

全局安装包和本地安装包


分成两类:
● 全局安装: 包被安装到了系统目录(一般在系统盘的node_modules中)。

npm root -g // 查看全局包的安装目录
npm list -g --depth 0 //查看全局安装过的包

● 局部安装(或者叫本地安装),包安装在当前项目的根目录下(与package.json同级)的node_modules中。
○ 命令:npm install 包名

全局包与本地包的区别

● 全局安装的包一般可提供直接执行的命令。我们通过对一些工具类的包采用这种方式安装,如:
gulp, nodemon, live-server,nrm等。
● 本地安装的包是与具体的项目有关的, 我们需要在开发过程中使用这些具体的功能。
一个经验法则:
● 要用到该包的命令执行任务的就需要全局安装
● 要通过require引入使用的就需要本地安装

全局安装nodemon包

作用 : 它能帮我们自动检测到我们的代码的修改,并自动重新运行我们的代码

安装 nodemon : 通过npm包管理工具来进行安装。

步骤:
在任意位置 打开一个小黑窗,输入如下命令:
npm install -g nodemon 回车。
此操作需要联网,根据网络速度所耗时间不同。如果这个命令执行完成并没有报错,就是说明安装成功了。

使用nodemon

等待安装成功之后,使用方法也非常简单:在命令中,使用nodemon来代替node。

// 原来是:
node server.js// 现在是
// 改成 nodemon server.js
nodemon server.js

它的好处在于会自动监听server.js这个文件的变化,如果变化了,就会重新自动再去运行。相当于是如下伪代码:

while(server.js 变化了){node server.js
}

说明:

● 它是一个第三方的包(其它程序员写的工具)
● 之前的node server.js还是可以用的。

可能会出现的错误

● 运行nodemon,如果报错如下:

● 解决办法是:
○ 管理员方式,打开命令行(powershell)窗口
○ 执行 set-ExecutionPolicy RemoteSigned;
○ 在出现的选项中,输入 A,回车。即可
● 如果报错如下

解决办法,重启vscode,win7可能要重启电脑。

开发依赖和生产依赖(了解)

在本地安装包时,表示我们这个项目要用到这个包,换句话说,我们这个项目要想成功运行,要依赖于这些个包。

但在,具体在项目进行的哪一阶段依赖于这些包呢?也有具体的差异。

本地开发 ----> 上线运行

理解

举个生活中建房子的场景:
在建房子时,我们依赖:
● 辅助工具:尺子,水平仪,脚手架
● 原材料:钢筋,水泥
在住房子时,我们依赖:
● 原材料:钢筋,水泥
在房子进入到了使用阶段时,我们就不再需要尺子,水平仪,脚手架等这些个辅助工具了。我们买一所房子时,也不应该支付巨型脚手架的费用。
在开发前端项目的过程中也存在类似的问题:我们的开发过程和使用过程是分开的,开发项目时需要用到的包可能在使用项目时就不需要用到了。
假设有这么两个包:
● gulp-htmlmin。这个工具是用来把html代码进行压缩的(去掉空格,换行等),我们需要在开发时使用它,而项目一旦上线,我们就不再需要它了。,因此将它归类为"开发依赖"。
● axios。在开发时参与源码编写,在发布上线的生产环境中也是需要它的。不仅在开发环境编写代码时要依赖它、线上环境也要依赖它,因此将它归类为"生产依赖"。

npm和包、npm下载安装使用包、全局安装包和本地安装包、全局安装nodemon包、开发依赖和生产依赖相关推荐

  1. npm 包与模块关系 下载使用包 init命令 package.json文件 node_modules文件夹 全局安装包和本地安装包 开发依赖和生产依赖

    npm 了解npm npm 全称Node Package Manager(node 包管理器),它的诞生是为了解决 Node 中第三方包共享的问题. npm 不需要单独安装.在安装Node的时候,会连 ...

  2. android10官方刷机包下载,Android 11 喜讯!小米 10 率先尝鲜,官方刷机包发布下载...

    原标题:Android 11 喜讯!小米 10 率先尝鲜,官方刷机包发布下载 6月15日消息,小米 MIUI 官方今天宣布 Android 11 Beta1 来了,小米 10 系列手机率先尝鲜体验,M ...

  3. win ce车载系统刷机包_Android 11 喜讯!小米 10 率先尝鲜,官方刷机包发布下载

    6月15日消息,小米 MIUI 官方今天宣布 Android 11 Beta1 来了,小米 10 系列手机率先尝鲜体验,MIUI 官方还表示"欢迎开发者进行体验",基于 Andro ...

  4. ue4 离线渲染_UE4基础:离线安装方法(附UE4.25.0离线安装包下载)

    注意:离线安装是指不用通过Epic的客户端下载巨大的安装包,但是某些步骤还是需要网络连接的.并且Epic的账号也是需要的. 下载地址见文章最下方 为什么要离线安装? 离线安装并不是必须的,老王亲测从官 ...

  5. python编辑ug update_PyPy3官方版下载-python编辑器 V3.4.2 官方最新版 - 安下载

    PyPy3是一款功能强大的python编辑器,Python安装程序现在包含一个自动安装或升级pip的选项,这是一个用于安装和管理Python包的工具:默认情况下启用此选项,无需Internet访问,如 ...

  6. Windows系统下nodejs、npm、express的下载和安装教程详解

    这篇文章主要介绍了Windows系统下nodejs.npm.express的下载和安装教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1. node.js下载 首先进入http://nod ...

  7. 最近自己安装CDH5.X版本时发现,CM包和parcels包无法下载了。

    最近自己安装CDH5.X版本时发现,CM包和parcels包无法下载了.登录Cloudera官方发现需要订阅,官网: 早在之前就听说cloudera manager 6.3.3和 CDH 6.3.3以 ...

  8. pip包离线下载安装(亲测可用)

    pip包只下载不安装 法1: https://pypi.org/ 法2: pip download -d [path] [package] 其中,[path] 为下载路径 [package]为包名. ...

  9. 中兴远航10 root获取 ZTE 7530N 刷机magisk 刷机包TWRP下载安装LS框架

    中兴远航10  root获取 ZTE 7530N 刷机magisk 刷机包TWRP下载安装LS框架 MT6833 preloader_k6833v1_64.bin 此款机器需要先解锁BL才可以root ...

  10. LATEX以及宏包的下载和安装(附下载链接)

    LATEX以及宏包的下载和安装(附下载链接) TexStudio以及宏包下载和安装 LATEX以及宏包的下载和安装(附下载链接) 1. 环境下载 2. 环境安装 2.1 MiKTeX安装 2.2 Te ...

最新文章

  1. python-web自动化-Python+Selenium之expected_conditions:各种判断
  2. ASP.NET中常用功能代码总结(5)——文件操作篇
  3. 控制用户输入字符的个数
  4. iOS 编写高质量Objective-C代码(六)
  5. java 压缩文件夹_java 实现压缩文件(单文件 或 文件夹)
  6. TCL微型计算机如何投屏,TCL电视怎么投屏?3个办法帮助你完美解决
  7. TikTok最适合普通小白的赚钱方法?
  8. 可视化编程真的有那么糟糕?
  9. java中文件下载的思路(参考:孤傲苍狼)
  10. mvn dependency命令
  11. 中彩分析家 v7.18 build 1203 怎么用
  12. shopex使用经验
  13. mysql 引擎 切换_Mysql表引擎的切换
  14. 使用spire.pdf.free缩小过大的pdf页面
  15. Keil的安装及使用
  16. Android屏幕适配方案
  17. f5双机配置_F5负载均衡器双机切换机制及配置
  18. java 小程序 多线程_《多线程练习—买票小程序——Java第十四周》
  19. UG编程入门实战详解,带你快速了解UG编程的实现
  20. led显示屏服务器是什么问题,led显示屏怎么设置

热门文章

  1. Office 2021办公套件iso镜像下载
  2. dex2jar 和 jd-gui 的安装与使用
  3. matlab 取整数命令,matlab取整函数命令代码
  4. 最新版全自动脚本交友聊天平台挂机
  5. 中国城市统计年鉴中地级市面板数据(2000-2019年)
  6. python通讯录管理系统设计_通讯录程序设计报告
  7. node-sass安装失败完美解决方法
  8. Mac photoshop cc 2017 破解补丁
  9. 概率论与数理统计——随机变量及其分布
  10. java面试题,各大企业常见的java笔试题及答案(精华)