如何使用typescript和node创建自己的cli



我想使用typescript和node创建自己的cli。

使用tsc构建代码后,我使用npm install -g .作为全局cli进行安装在cmd上运行test-cli时,希望在控制台上打印"test",但在编辑器上打开一个javascript文件build/index.js。它似乎打开了一个文件,而不是运行该文件。

在检查C:UsersMyUserAppDataRoamingnpm中的test-cli.cmd文件时,我发现它与其他成功的cli文件有点不同。

test-cli.cmd内容(不工作(:

...
"%dp0%node_modulestest-clibuildindex.js"   %*
...

truffle.cmd内容(工作正常(:

...
IF EXIST "%dp0%node.exe" (
SET "_prog=%dp0%node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
"%_prog%"  "%dp0%node_modulestrufflebuildcli.bundled.js" %*
...

指定node.exe来运行那个javascript文件肯定有区别。如何解决此问题?

这是我的代码概述

来源树:

|__build
|  |__index.js
|  |__index.map.js
|__src
|  |__index.ts
|__package.json
|__tsconfig.json

CCD_ 11只是一个简单的代码。

// index.ts
console.log("my test cli");

在package.json 中也有一个简单的数据

// package.json
{
"name": "test-cli",
"version": "1.0.0",
"main": "src/index.ts",
"bin": {
"test-cli": "build/index.js"
},
"license": "MIT",
"scripts": {
"build": "tsc",
"test": "echo "Error: no test specified" && exit 1"
},
"devDependencies": {
"@types/node": "^17.0.22",
"ts-node": "^10.7.0",
"typescript": "^4.6.2"
}
}

不知道这是否有帮助,但您可以尝试使用enquirer和inquirer:等软件包

示例:

const { prompt } = require('enquirer');

const response = await prompt({
type: 'input',
name: 'username',
message: 'What is your username?'
});

console.log(response); // { username: 'jonschlinkert' }

最新更新