node.js 学习笔记5

生产环境与开发环境

开发环境:在项目开发时,用来测试的本地地址及环境,一般是指开发人员的电脑

生产环境:项目正式运行的环境,一般是指正式的服务器电脑

生产依赖与开发依赖

对于生产和开发环境,可以安装各自的依赖,在安装依赖时,通过不同的语句进行区分:

npm i -S 或 npm i --save,用于生产依赖安装,安装后,包信息保存在package.json中的dependencies属性中

npm i -D 或 npm i --save-dev,用于开发依赖安装,安装后,包信息保存在package.json中的devDependencies属性中

要注意,其中,生产依赖可以用于 开发环境和生产环境,而开发依赖只用于开发环境。

**为什么在开发和生产阶段会有不一样的包需求呢?**思考这样一种场景,由于现在前端项目都是由脚手架生成的,对于部分无法解析成css的代码,可能需要包来进行转换,而对于生产环境,由于生产环境的代码是已经打包好的css代码,因此生产环境并不需要这个转换包。所以可以把这个包安装在开发依赖中。

不管是生产依赖还是开发依赖,都在node_modules文件夹下。

有时候,会产生这种现象,本地没有安装多少包,但是node_modules文件夹下有一长串文件,这是由于,对于一个包来说,这个包可能引用了其他许许多多的依赖(可以查看node_modules文件夹对应文件的package.json中的配置),因此安装这个包,还会安装包对应的一系列依赖。

**包应该安装在生产依赖还是开发依赖中呢?**可以查看包的开发文档,文档中可能会有提及。如果文档中没有,可以根据包的用途酌情处理。

在安装包时,-S是默认选项,也就是说,如果安装时没有指定环境,则默认安装的是生产依赖,在开发环境和生产环境中都可以使用。

npm安装包的所有依赖

使用npm i,可以安装当前文件路径下package.json和package-lock.json中配置的所有依赖。

由于node_modules文件夹一般很大,大多数情况下,node_modules不会被存入仓库,所以本地下载代码之后,通常需要本地再安装一下项目所需的所有依赖。

npm全局安装

不管是npm install -S 还是npm install -D,都是安装在本地文件夹下,也就是说,只有当前项目能使用安装的包。

如果需要进行全局安装,可以通过-g指令来进行。

npm install -g

安装完成后,可以在任何目录下运行安装的包。

通过npm root -g可以查看全局包安装的位置。

全局安装通常适用于工具类的包。

比如监测代码改变自动重启服务器的包nodemon,就很适合全局安装。

全局安装与局部安装

对于局部安装的包,需要通过require引入代码中,然后进行调用,而对于全局安装的包,则需要在命令行中敲代码主动调用包。

全局安装的包一般安装在C盘某个位置,而局部安装包安装在当前本地项目的node_modules文件夹下。

windows执行策略

windows可能会对全局安装的脚本进行限制,也就是说,可能全局安装包会在windows环境下报错。

如果想消除这种报错,需要修改windows执行策略。

步骤:以管理员身份打开windows powershell命令行。

输入命令set-ExecutionPolicy remoteSigned,然后输入A,即可解决这个问题。

另一种解决方案是更改vscode下的命令行类型:在cmd中运行。

步骤:在vscode中,终端的操作栏,点击+旁边的按钮,然后选择select default profile(选择默认配置)

点击之后,会弹出一个选择框,选择第一个选项:

然后再点击+,新建的就是cmd终端:

npm安装指定版本包

使用npm i 包名@版本号,可以通过该命令安装指定版本的包

npm删除包

使用npm r 包名 或者npm remove 包名,或者npm r -g 包名(删除全局包),或者npm uninstall,即可删除包

npm配置命令别名

有时候,可能需要在命令行敲一个比较长,或者不便于阅读的命令,此时可以给该命令设置别名,来提高开发效率。

别名配置方法:

在package.json文件夹下的scripts对象中配置,对象中的key是命令的别名,value是该别名对应的命令:

javascript 复制代码
...
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "server": "node a.js"
  },
...

当我们想调用别名时,使用语法npm run 别名 ,即可调用别名对应的语句

在本例中npm run server即相当于node a.js,即运行本地项目:

在敲npm run时,会去package.json中的scripts下去找同名指令,如果找到了,则会运行对应的指令,没有找到则会报错。

有时候,也许会觉得使用npm run 别名时,敲的命令长度并没有比对应的命令短多少,但是为什么要使用别名呢?一个是在开发中,别名一般是约定俗成的,一个是随着项目的开发,别名对应的代码可能会变长。总之,使用别名的方法是利于开发的。

对于别名,有一个特殊的别名start,对于start来说,可以使用npm start调用对应的命令,而不需要加run。

npm run有自动向上寻找的特性,与require类似,npm run会寻找当前目录的package.json,如果当前文件下没有package.json,则会去当前文件的上级目录去寻找package.json。

自动向上寻找特性其实是方便开发的,因为在实际开发中,可能文件夹套了很多层级,对于一个包或者是package.json来说,不可能在每个文件夹下都创建一个package.json,因此向上寻找特性是很必要的。

当拿到一个新项目时,一般可以先查看package.json的scripts配置,去获取一些项目运行的信息。

环境变量path

环境变量path不是node.js独有的,是计算机的一个通识知识,但是在开发过程中,可能会涉及这个问题,所以这里简要介绍一下。

对于一个软件,虽然本地安装了,但是在命令行中直接敲对应的代码,命令行会提示"XX"不是内部或外部命令,也不是可运行的程序或批处理文件。

但是,如果进入该软件的工作目录,然后再敲代码,通常代码则会生效。

为什么会产生这种现象呢?这是由于在没有配置的情况下,命令只对当前文件夹生效,如果直接在当前文件夹下敲击代码,可能对应的代码工作目录是另一个文件夹,就会引发报错。如果需要在所有目录下敲击代码,都想使代码生效,就需要把该工作路径添加到环境变量里。这样下次再敲相同的代码时,电脑会自动去环境变量记录的目录中查看对应的命令能否运行,这样该命令就可以在任何路径下运行了。

如何配置环境变量?在高级系统设置页面:

点击环境变量进行配置:

在该页面中,上面是当前用户的环境变量,下面是系统的环境变量,对于本地开发的环境变量,一般放到用户环境变量就可以了。

把对应的路径添加到Path变量里:在该页面双击Path这一行,在弹出的页面中选择新建,然后输入对应的工作路径就可以了。要注意,修改环境变量之后,需要新打开命令行窗口,才能生效,在旧的命令行窗口中,新配置的环境变量无法生效。

在配置之后,在命令行窗口中敲代码时,首先会在当前路径下执行,如果没有找到对应的执行对象,则会进入环境变量Path配置的列表中,在列表中依次寻找所有路径,如果找到了则进行执行,没有找到则会进行报错。

相关推荐
程序员清洒12 小时前
Flutter for OpenHarmony:GridView — 网格布局实现
android·前端·学习·flutter·华为
喜欢吃燃面12 小时前
Linux:环境变量
linux·开发语言·学习
代码游侠12 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
张祥64228890413 小时前
误差理论与测量平差基础笔记十
笔记·算法·机器学习
云边散步16 小时前
godot2D游戏教程系列二(4)
笔记·学习·游戏开发
BORN(^-^)16 小时前
《产品经理方法论》阅读笔记
笔记·产品经理
jrlong16 小时前
DataWhale大模型基础与量化微调task4学习笔记(第 2 章:高级微调技术_RLHF 技术详解)
笔记·学习
Darkershadow16 小时前
蓝牙学习之Time Set
python·学习·蓝牙·ble·mesh
傻小胖17 小时前
13.BTC-思考-北大肖臻老师客堂笔记
笔记·区块链
好奇龙猫17 小时前
【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(9):単語文法】
学习