node npm shell 等脚本学习记录

本文介绍了如何在Linux或Mac系统中执行shell和node脚本,包括设置执行权限、指定执行模块和脚本参数。详细讲解了Node.js中执行ES6模块的解决方案,如使用mjs扩展名或babel-node。此外,还讨论了nodemon实现文件热更新,以及npm CLI开发,包括使用commander库创建命令行工具和通过shelljs与终端交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

脚本执行必要条件

1.脚本执行需要设置执行权限
命令行中输入如下命令:

chmod u+x <脚本文件路径> //添加脚本执行权限及本用户权限

2.告诉系统用什么执行当前脚本
文件第一行写 #!/usr/bin/env + 模块名称

#!/usr/bin/env  ts-node //  用ts-node 执行 

#!/usr/bin/env  node // 用node 执行 
 
#!/usr/bin/env bash  // 执行shell  

3.执行方法
直接点击文件执行 或打开命令行工具 输入 ./脚本文件路径 执行
如果没告诉系统用什么执行当前脚本 那就需要 node ./脚本文件路径 执行了

shell脚本基础教程

1.shell 脚本 示例

创建test.sh 文件复制下方代码 直接设置权限 双击执行

#!/usr/bin/env bash  
# 打开命令窗口 并 输出 开始执行 shell脚本
echo "开始执行 shell脚本" 

# 要求你输入名字
read -p "请输入你的名字:" name

# 要求你输入名字
echo "输入的名字是:${name}"

# 打开网页跳转到百度
open "http://www.baidu.com"

2.node 脚本

node 脚本执行es6 解决方案

  1. 把js 文件 改成mjs 文件,告诉node 用es6模块执行文件
  2. 使用ts 在文件第一行加入 #!/usr/bin/env ts-node ,需要全局安装 ts-node模块,ts-node 会把ts编译成es5 执行
  3. 使用 babel-node 替换node 执行 同时需要配置安装相关依赖和配置 ,对于写一个简单的node 脚本来说太麻烦 不怎么用就不详细介绍有兴趣自行看官网文档

方案1适用: 单个文件编写的node 脚本
方案2适用: 适用ts 编写的node 脚本
方案3适用: 适用于大型项目

node文件热更新

安装 nodemon 模块

npm i add nodemon

使用

nodemon node ./文件执行路径

监听node 文件,文件修改立马就会重执行 文件
用于解决每次修改文件需要手动执行的问题

脚本参数/环境变量

node 脚本
脚本参数 process.argv
环境变量 process.env

shell 脚本
获取参数 $0 $1 // 以$开头

3.npm cli 开发

1.创建脚本node.ts 安装 commander + ts-node + shell

#!/usr/bin/env  ts-node
 
import { Command } from "commander";
import shell from 'shelljs'
const program = new Command()
  
  
program
.name("my-command")
  .version('v0.0.1', '-v, --version', `输出版本号`)
  .option('-d, --debug', '调试模式') 
  .option('-p, --pizza-type [type]', '自定义输入命令')
  .option('-n, --number <numbers...>', '输入多文字',)
  //.option('-l, --letter [letters...]', '指定的字母') 
  .option('-na, --name <name>', '名称')
 
 

program.parse(process.argv);

console.log( program.opts())

2.在npm package.json 配置文件中 添加
设置名称 + 脚本路径

"bin": {
    "my-test": "./你的脚本路径" // 
  },

在本地开发npm 模块,使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试和测试

npm link 

命令行输入 my-test 会执行你的脚本文件
命令行输入 my-test -v 可以看见版本号
命令行输入 my-test -h 可以找到帮助

使用 commander 官方文档( cli开发 必备)
使用 shelljs 模块 赋予node 和终端交流的功能 官网文档

使用 shell.exec 直接输入在终端 执行的命令如 shell.exec(‘git --version’) 打印出git版本号

#!/usr/bin/env  ts-node
  
import shell from 'shelljs'

if(shell.exec('git --version')){
  console.log("当前环境有git")
  shell.exit(1)
}else{
  console.log("当前环境没有git")
}

inquirer模块 询问用户输入

inquirer.prompt([
    {
      type: 'list',
      name: 'frame',
      message: '请选择开发的脚手架',
      choices: ['react'],
    },
    {
      type: 'input',
      name: 'name',
      message: '请输入项目名称',
    },
    ])

commander 模块 官方文档( cli开发 必备)

import { Command } from "commander";

program
.name("my-command")
  .version('v0.0.1', '-v, --version', `输出版本号`)
  .option('-d, --debug', '调试模式') 
  .option('-p, --pizza-type [type]', '自定义输入命令')
  .option('-n, --number <numbers...>', '输入多个',) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值