当前位置:网站首页>1-4 NodeJS的安装之配置可执行脚本

1-4 NodeJS的安装之配置可执行脚本

2022-04-23 05:56:00 画不完的饼

NodeJS配置可执行脚本

首先,了解一下,模块安装本地和安装全局的区别。

全局:
1.所有的项目都可以使用这个模块
劣势:(1)容易导致版本冲突
(2)不能基于commonJS模块规范,调取使用
就是不能再js中通过require调取使用

本地:
1.只能当前项目使用这个模块
劣势:(1)不能直接使用命令操作。比如命令行使用
推荐安装本地使用。

说到这里,你一定很诧异,为啥安装在全局可以直接执行命令》
先记住一个命令

npm root   ||  npm root -g   
查看本地或者全局环境下,npm的安装目录

在这里插入图片描述
这是我的安装路径。被我安装在全局了。然后根据npm的路径打开文件夹。可以看到如下图:
在这里插入图片描述
可以看到npm,目录下有一个vue.cmd的文件,这是我安装来测试的。其实有这个文件,就可以通过命令行使用 vue命令。如果你想也想创建一个命令,然后通过命令行触发,只要在这个目录下,创建一个cmd的文件,将内容编辑好即可。
也就是说,安装在全局目录下的模块,大部分都会生成一个.cmd的文件,只要有这个文件,那么文件名称就是一个可执行命令。例如:vue.cmd 那么 vue 就是命令
至于如何自己创建命令,复制如下代码:

@IF EXIST "%~dp0\node.exe" (
“%~dp0\node.exe” "%~dp0\node_modules\lol\index.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS=;%
  node  "%~dp0\node_modules\lol\index.js" %*
)

自己创建一下目录,玩下即可。

那么看到了。我们的模块安装在全局才能用命令行,执行命令,在本地安装怎么实现,看下面实例:

以下是上篇文章的package.json文件,也就是我们的配置清单。
在这里面可以看到,有一个scripts 的一个对象参数,可执行脚本

{
  "name": "c_web",		//模块名称
  "version": "1.0.0",		//版本号
  "description": "",		//模块描述
  "main": "index.js",		//模块主入口文件
  "scripts": {					//可执行脚本。以下为示例:
    "dev": "webpack --mode development",			//在开发环境打包
    "build": "webpack --mode production"				//在生产环境打包
  },
  
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {				//生产依赖
    "jquery": "^3.4.1"
  },
    "devDependencies":{		//开发依赖
	  
  }
}

它的实现原理就是,把模块安装在本地,如果是支持命令操作的(会在node_modules的bin中生成xxx.cmd文件)只不过这个文件无法在全局执行。这里注意,这里的node_modules指的是当前目录下的。

“dev”: “webpack --mode development”
命令的属性名字,自己定义即可,属性值是需要执行的命令脚本。
可以看到我已经配置了两个命令。

“scripts”: { //可执行脚本。以下为示例:
“dev”: “webpack --mode development”, //在开发环境打包
“build”: “webpack --mode production” //在生产环境打包
},
这里通过scripts执行我们定义的命令,例如:

npm run dev
npm run build

这样的命令实际进行了以下步骤:
(1)首先找到scripts中查找
(2)找到并把后面对应的值(执行脚本)执行
(3)执行脚本的时候,回到本地node_modules的bin文件下查找,没有的话,在向npm安装的全局目录下查找。

版权声明
本文为[画不完的饼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_39162041/article/details/105090873