npm

了解npm

  • npm 全称Node Package Manager(node 包管理器),它的诞生是为了解决 Node 中第三方包共享的问题。
  • npm 不需要单独安装。在安装Node的时候,会连带一起安装npm。
  • npm -v检查安装的情况。
  • 官网https://www.npmjs.com/

当我们谈到npm时,我们在说两个东西:

  • 命令行工具。这个工具在安装node时,已经自动安装过了。
  • npm网站。这是一个第三方模块的"不花钱的超市",我们可以自由地下载,上传模块。

包(package)与模块关系

npm网站收集了前端的各种工具.

之前学习过:jQuery, bootStrap, flexible.js, arttemplate.js, layui.js, echarts.js........你是如何下载的?对应官网下载有没有一个想法:在一个地方下载所有的库(模块.....)

npm网站上去下载我们的需要的代码时,它们是以""这种结构放在npm网站上的。先来了解下包和模块的关系。

  • nodejs中一个模块就是一个单独的js文件
  • 包是多个模块的集合。一个模块的功能比较单一,所以一个包一般会包含多个模块。
  • npm 管理的单位是包。类似于网站和网页的区别:一个网站一般会包含多个网页。

npm下载使用包

分成三步:

  • 初始化项目npm init如果之前已经初始化,则可以省略。
  • 安装包npm install包名。
  • 引入模块,使用。

保持联网的状态~~

第一步:初始化项目

这里提到的项目并不是某个具体的功能,只是要创建一个空文件夹即可(注意,不要起中文名字哈)。

进入到项目所在的根目录下,启动小黑窗(按下shift键,点击右键,在弹出的菜单中选择 “在此处打开命令行”)

输入如下命令:

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

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

第二步:安装包

npm 这个超市上有好的代码,我们想下载来用 ------ 安装包

生成了package.json文件之后,我们就可以来安装第三方包了。在npm官网中,有上百万个包,供我们使用(你需要在npm网上注册帐号,登陆上去,才可以看到如下的数据,如果只是下载安装包,则并不需要注册)。

根据我们遇到的实际问题,我们来引入相应的包来解决它们。例如,我们在开发一个项目,其中涉及一些对日期时间的处理可以安装dayjs包。

安装day.js包

day.js是一个专门用来处理日期时间的一个包

https://dayjs.fenxianglu.cn/

npm install dayjs

第三包:使用包

当我们已经下载好一个包之后,就可以像使用核心模块一样去使用它。

格式是:const 常量名 = require('包名')这个格式与引入核心模块的格式是一样的(不需要像自定义模块那样加./)。

// 从npm下载 别人写的好代码,在本地引入,并使用
const dayjs = require('dayjs')console.log( dayjs()
.startOf('month')
.add(1, 'day')
.set('year', 2018)
.format('YYYY-MM-DD HH:mm:ss') );console.log(dayjs);

npm init 命令

使用:

在某个目录下开启小黑窗,输入如下命令:

# init 初始化
npm init

它会启动一个交互式的程序,让你填入一些关于本项目的信息,最后生成一个package.json文件。

如果你希望直接采用默认信息,可以使用:

npm init --yes
// 或者是 npm init -y

说明:

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

package.json文件

它一般是由npm init命令创建出来的,它的整体内容是一个json字符串,用来对当前项目进行整体描述。其中最外层可以看作是一个js的对象(每一个属性名都加了"",这就是一个典型的json标记)。这个文件中有非常多的内容,我们目前学习如下几个:

  • name: 表示这个项目的名字。如是它是一个第三方包的话,它就决定了我们在require()时应该要写什么内容。
  • version:版本号
  • keywords:关键字
  • author: 作者
  • descrption: 描述

其它可参考

1.http://javascript.ruanyifeng.com/nodejs/packagejson.html

2.http://caibaojian.com/npm/files/package.json.html

node_modules文件夹

作用

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

执行逻辑

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

  1. 如果有package.json
    (1) 修改package.json文件。根据开发依赖和生产依赖的不同,决定把这句记录添加devDependencies或者是dependencies列表中。
    (2) 修改node_modules文件夹

    1. 如果有node_modules文件夹,则直接在下面新建名为XXX的文件夹,并从npm中下来这个包。如果这个包还有其它的依赖,则也会下载下来。
    2. 如果没有node_modules,则先创建这个文件夹,再去下载相应的包
  2. 如果没有package.json。会给一个警告信息。

说明:

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

全局安装包和本地安装包

简介

我们通过npm install命令来安装包,简单说就是把包从npm的官网(或者是指定的镜像源)下载到我们自己的电脑中。那具体这个包下载到哪里了,还是有一点讲究的。

分成两类:

  • 全局安装: 包被安装到了系统目录(一般在系统盘node_modules中)。

    • 命令:npm install -g 包名或者 npm install 包名 -g
    • 辅助提示:
      npm root -g // 查看全局包的安装目录npm list -g --depth 0 //查看全局安装过的包
  • 局部安装(或者叫本地安装),包安装在当前项目的根目录下(与package.json同级)的node_modules中。

    • 命令:npm install 包名

全局包与本地包的区别

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

一个经验法则:

  • 要用到该包的命令执行任务的就需要全局安装。
  • 要通过require引入使用的就需要本地安装。

开发依赖和生产依赖

简介

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

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

理解

举个生活中建房子的场景:

在建房子时,我们依赖:

  • 辅助工具:尺子,水平仪,脚手架
  • 原材料:钢筋,水泥

在住房子时,我们依赖:

  • 原材料:钢筋,水泥

在房子进入到了使用阶段时,我们就不再需要尺子,水平仪,脚手架等这些个辅助工具了。我们买一所房子时,也不应该支付巨型脚手架的费用。 在开发前端项目的过程中也存在类似的问题:我们的开发过程和使用过程是分开的,开发项目时需要用到的包可能在使用项目时就不需要用到了。

假设有这么两个包:

  • gulp-htmlmin。这个工具是用来把html代码进行压缩的(去掉空格,换行等),我们需要在开发时使用它,而项目一旦上线,我们就不再需要它了。,因此将它归类为"开发依赖"。
  • jquery。在开发时参与源码编写,在发布上线的生产环境中也是需要它的。不仅在开发环境编写代码时要依赖它、线上环境也要依赖它,因此将它归类为"生产依赖"。

这个差异就表现在,我们在打包项目时,就不需要打包“开发依赖”的包,这样减少成本。

—webpack

操作

这两种依赖关系,在具体操作的过程中,有如下区别

  1. 保存到开发依赖(devDependencies)
npm install 包名 --save-dev
// 或者 npm install 包名 -D

通过这种方式安装的包出会现在package.json文件中的devDependencies字段中。

  1. 保存到生产依赖(dependencies):
npm install 包名
// 或者 npm install 包名
// 或者 npm install 包名 -S

技巧

  • 加了-D : 开发依赖,这就表示这个工具包只在开发项目时候要用,项目开发完成就不需要
  • 不加-D生产依赖,这就表示这个工具包在项目做完了之后也要用。

什么包加上-D,什么包不要加?------- 看文档

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

  1. python包和模块关系_Python包和模块的分发详细介绍

    发布Python包 上一篇介绍了如何使用别人的轮子,现在我们讨论下如何自己造轮子给别人用. 作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其 ...

  2. 从官网下载的python包如何使用-如何下载python包

    pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x. 部分 ...

  3. Python基础知识学习(六)——包与模块:指令、包加载步骤、搜索范围

    目录 1.模块的使用 2.包的使用 当我们项目越来越复杂,将所有功能写进一个脚本显然不是一个最优的方法,分门别类将不同的功能的语句.函数.对象封装在不同的模块里.什么是一个模块?模块非常简单就是一个p ...

  4. composer require下载指定包,同时出现下载其他包

    示例:hinkcmf5.1框架 当需要开发一个导出pdf文档的功能,我们会使用composer下载包(比如mpdf包). 使用composer require mpdf/mpdf进行下载 如果当前co ...

  5. 使用npm init生成package.json

    一次安装三个包 npm install --save npm init 将自动生成package.json文件: 指定入口文件: npm install

  6. python 包和模块_Python中的包和模块实例

    一.实例和结果 1)实例的结构和具体的文件: PyPackage │ PyCommonM.py │ __init__.py │ ├─p1Package │ P1M.py │ P1MC.py │ __i ...

  7. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  8. python入门须知:包、模块、库的含义以及导入以及包下__init__.py的作用

    概念 包:(Package) 包:是一个有层级的目录结构,包含n个模块或者n个子包,包中一定要有__init__.py文件,所以包只是一个组织方式,更加有条理,并不是必须的. 模块:(Module) ...

  9. 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装

    2019独角兽企业重金招聘Python工程师标准>>> 7.6.yum更换国内源 自定义yum源: [root@bogon ~]# cd /etc/yum.repos.d [root ...

最新文章

  1. NFS介绍、NFS服务端配置安装配置、 NFS配置选项、 客户端的配置
  2. C语言//注释使下一行代码失效
  3. 第三天2017/03/30(下午:二级指针的(输出)内存模型)
  4. cookie 和 session 详解
  5. oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列
  6. Linux远程管理协议相关知识介绍
  7. 深度学习(二十二)Dropout浅层理解与实现
  8. 基于Java的博客系统
  9. linux系统--C语言程序开发的基本步骤(包含gcc的基本步骤)
  10. 传统进销存软件上云势在必行
  11. 支持mrp软件的手机(MTK手机)检测
  12. HI3559A源码包编译及问题解决
  13. 电脑桌面不见计算机图标,主编教您电脑桌面图标都不见了怎么办
  14. 浙江树人大学计算机大类专业分类,浙江树人学院各专业收费明细表
  15. 晒往期云栖大会的照片或感想_赢2017杭州云栖大会门票
  16. ADP-L610-Arduino
  17. A类计算机机房温度变化,夏季什么样的温度才是机房适合的?
  18. Sklearn_LearningCurve
  19. 超级玛丽3通关指南+隐藏点整理
  20. 安卓10不支持qmc解码_Root神器支持安卓10 面具Magisk v20.4+Magisk Manager v7.5.1

热门文章

  1. 思科荣获'2006年度中国最受尊敬企业
  2. 汇编语言 王爽(第四版)复习笔记
  3. PyTorch 自定义 Dataset 及训练集、测试集划分方法
  4. C# ---XML与Excel相互转换(DataTable)
  5. 微分销商城系统源码 支持小程序端+公众号端二合一 含详细部署教程
  6. 科技查新报告需要注意什么?不通过的原因有哪些?
  7. 如何使用用友接口,进行API接口开发, 你烦恼了没?
  8. Columbia Biosciences 山羊抗鸡 IgY说明
  9. MacOS Big Sur 11.3.1 (20E241) With Clover 5134/OC 0.6.9/PE 三分区原版黑苹果镜像下载
  10. Eth-Trunk链路聚合(不配置ip,只配置链路聚合)