【发布时间】:2022-07-15 15:30:16
【问题描述】:
我想使用 typescript 和 node 创建自己的 cli。
使用tsc 构建代码后,我使用npm install -g . 作为全局cli 安装
在 cmd 上运行 test-cli 时,预计会在控制台上打印 "test",但它会在编辑器上打开一个 JavaScript 文件 build/index.js。它似乎打开了一个文件而不是运行该文件。
在查看C:\Users\MyUser\AppData\Roaming\npm中的test-cli.cmd文件时,发现它与其他成功的cli文件有点不同。
test-cli.cmd 内容(无效):
...
"%dp0%\node_modules\test-cli\build\index.js" %*
...
truffle.cmd 内容(正常工作):
...
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
"%_prog%" "%dp0%\node_modules\truffle\build\cli.bundled.js" %*
...
指定node.exe 运行该javascript 文件肯定有区别。
我该如何解决这个问题?
这是我的代码概览:
源码树:
|__build
| |__index.js
| |__index.map.js
|__src
| |__index.ts
|__package.json
|__tsconfig.json
index.ts 只需一个简单的代码。
// 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"
}
}
【问题讨论】:
标签: javascript node.js typescript npm command-line-interface