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

89 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

NodeJS配置可执行脚本

首先,了解一下,模块安装本地和安装全局的区别。 全局:
1.所有的项目都可以使用这个模块
劣势:

(1)容易导致版本冲突
(2)不能基于commonJS模块规范,调取使用 就是不能再js中通过require调取使用

本地:

1.只能当前项目使用这个模块 劣势:

(1)不能直接使用命令操作。比如命令行使用 推荐安装本地使用。\

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

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

20200325113922364.png

这是我的安装路径。被我安装在全局了。然后根据npm的路径打开文件夹。可以看到如下图:

20200325114638244.png

可以看到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安装的全局目录下查找。