当前位置:网站首页>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
边栏推荐
- ASP.NET CORE 配置选项(上篇)
- 查漏补缺(七)
- The difference between single quotation mark, double quotation mark and back quotation mark in shell script
- 七牛上传图片(前台JS+后台C#API获取token)
- oninput 一个函数达到控制多个oninput的效果(将本输入框的内容作为参数)【很实用,很实用】
- js获取链接?后边的参数名称或者值,根据url ?后的参数做判断
- js面试题:fn.call.call.call.call(fn2) 解析
- 2020 Jiangsu Collegiate Programming Contest-A.Array
- Detailed explanation and application of PN junction and diode principle
- 特效案例收集:鼠标星球小尾巴
猜你喜欢
随机推荐
Redux概述
时间戳转格式化日期
特效案例收集:鼠标星球小尾巴
SQLite compilation
POJ-The Unique MST
VHDL finite state machine (FSM) code example
若依框架从零开始
往String原型上封装一个时间戳转日期的方法
Set与Map
HDU-Tunnel Warfare
微信小程序之点击取消,返回上页,修改上页的参数值,let pages=getCurrentPages() let prevPage=pages[pages.length - 2] // 上一页的数据
v-for下定时给图片添加动画
.Net Core3.1 使用 RazorEngine.NetCore 制作实体生成器 (MVC网页版)
2022ldu winter vacation training - program patch
自用学习笔记-连接式与非连接式访问数据库
Using printf in MFC
Vs can be compiled, but there will be a red underline to indicate the problem of undefined identifiers
Node的文件系统及Buffer概述
查漏补缺(八)
SQLite3 encrypted version