如何在package.json中使用节点模块
安排JavaScript代码的主要方法有两种-通过库结构或框架。 但是,如果深入研究,您会发现代码通常以生成模块的方式构造。
模块是可以导入或导出的功能。 有时它以第三方库的形式出现。 有时,它与您正在使用的框架捆绑在一起。
模块可以在应用程序的各个部分中使用,可以捆绑或排除在构建中。 无论使用还是实施它们,模块本质上都是构成应用程序预构建功能的许多乐高玩具。
什么是节点模块?如何使用它们?
Node.js是一个服务器运行时环境,可在浏览器外部运行JavaScript。 尽管普遍认为,node.js本身不是框架。 而是允许框架和库运行的东西 。
对于前端应用程序,除了许多手动配置之外,您还可以通过仅打开浏览器来在没有服务器的情况下运行JavaScript应用程序。 后端应用程序需要运行时环境才能运行。
没有接口的后端应用程序通常以API的形式出现或与数据库进行交互。
那么, 模块到底是什么?
模块是基于功能分组的代码集群。 它们是高度独立的,因此具有很高的可重用性并且彼此独立 。
谈到代码,将模块导入项目的一种方法是使用require()
函数。
例如,要实现第三方HTTP服务器模块express
,您可以通过控制台来实现。 node_modules
文件夹是所有第三方库都下载到其中并从中提供服务的默认文件夹。
要安装,只需使用npm即可。
npm install express
要导入,请创建一个const
并通过require()
对其进行调用
const express = require('express');
要引用和使用Express,可以通过对其进行初始化来实现。
const app = express() app.get(‘/’, function(req, res) { res.send(‘Hello TabNine’) }) app.listen(3000)
package.json的功能
在讨论package.json
的用途和功能之前,我们需要对npm
有一个清晰的了解。
npm
是我们使用的其中一项功能,但实际上可能并不确切知道其功能。
那么npm是什么?
npm
是一个程序包管理器。
包管理器是一种软件,它可以自动安装,升级,配置和 它覆盖的空间 除去 的东西 。 对于npm
,这意味着除了通过npm
命令启动node.js之类的运行时之外,还意味着安装,升级,配置和删除库和框架 。
它使您不必手动编写所有不同的途径,而不必依赖所有代码来运行JavaScript应用程序。
package.json进入哪里?
package.json
是json
文件, npm
默认使用它来标识项目并处理所有声明的依赖项。 npm
将此用作起点,该文件中包含的信息用于获取和协调应用程序运行所需的各种JavaScript库(程序包) 。
您可以使用npm init
通过控制台创建package.json
文件
当您运行此命令时,它将为您提供一系列问题,可通过控制台回答并生成一个json文件,其中包含name
, version
, description
, main
(应用程序的入口),任何scripts
, author
和license type
。
如果您决定不回答控制台中的问题,然后稍后再返回,则package.json
文件应如下所示:
{ "name": "tabnine", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
默认情况下, index.js
被设置为main
,但是您可以随心所欲。
如何将节点模块添加到package.json
要将第三方模块自动添加到package.json
,请在安装模块时运行--save
标志。
例如,在上面的示例中,我们使用npm为项目使用了安装的express。 要将其添加到我们的package.json中,请在末尾添加--save
标志。
npm install express --save
该 --save
标志本质上是告诉 npm
保存表达作为一个依赖 。 如果不存在,它将在package.json
文件中创建一个新的dependencies
对象,如下所示:
"dependencies": { "express": "^4.17.1" }
否则, npm
只会将其添加到 dependencies
对象中 。 默认情况下, npm
将查找您的node_module
文件夹以找到依赖项。
您也可以使用 --save-dev
使特定模块仅在开发环境中可用 。 使用--save-dev
,它将以与dependencies
和--save
相同的方式创建或添加到devDependencies
对象。
为什么这很重要?
的 dependencies
的对象在一个优雅和有效的方式使得有可能共享代码。 npm
在跟踪依赖关系和使用的版本方面起着关键作用。 当您通过git在团队设置中推送和共享代码时,仅使团队创建的代码可用 。
这样可以节省您的下载和上传时间,以及在手动更新之间进行协调。 要在本地计算机上安装并实例化一个正在运行的项目,您只需要提取代码并运行npm install
。
包管理器将使用 package.json
内的元数据, 并为您找出其余的内容 。
但是, npm
并不是唯一可用的软件包管理器。 2016年,Facebook宣布发布Yarn,这是一个运行npm Registry的程序包管理客户端 。
npm注册表是JavaScript模块的免费公共注册表。 从那时起,Yarn成为了另一个主要且使用广泛的软件包管理器。 Yarn向后兼容,并遵循npm为 package.json
文件 设置的约定 。
这意味着您不必担心依赖项对象是否被称为其他对象。
将节点模块放在不同的文件夹中怎么办?
有时您可能不希望将模块下载到node_module
文件夹中。 无论是什么原因,都无法在npm
中对其进行更改,因为它是node.js核心模块加载系统的一部分。 如果要全局更改它,则可能导致您的软件包损坏 。
但是, yarn提供了配置它的选项。 为此,请运行以下命令 :
yarn install --modules-folder <path>
包管理器将进行繁重的工作,以使所有工作顺利进行。 另外, 如果您不想每次都指定路径,则可以创建一个名为.yarnrc
的文件,并使用以下内容作为配置 。
# ./.yarnrc
--modules-folder lib
当您运行yarn install
,它将创建一个lib
文件夹并向其中安装软件包,而不是node_modules
。
结论
模块是构建健壮和可重用代码的基础。
大多数主要框架都有一个命令行界面,您可以通过npm
安装该界面来npm
Angular CLI和Vue CLI之类的准系统应用程序。 这些生成器将为您自动创建 具有所需依赖项 的 package.json
,以使事情顺利运行。
因此, 许多新开发人员倾向于错过学习 package.json
的重要性及其 功能的方法 。 生成器通常通过生成以公认的标准为模型的脚手架代码,消除设置的复杂性,并使应用程序开发的任务更快,更强大。
package.json
是一个简单的文件,有可能随着增长而变得复杂。 dependencies
对象只是它能做的一小部分,并且涵盖了本文的范围。
从理论上讲,您可以自己手动添加每个依赖关系,但是使用软件包管理器(例如npm
和yarn
只会使您的开发流程变得更快,更容易。 它还减少了错误和错误的可能性。