ts-node写ts,启动时习惯在package.json里写

  "scripts": {
"build-ts": "tsc",
"start": "ts-node src/server.ts",
"start:dev": "nodemon",
"serve": "node dist/server.js",
"test": "mocha --require ts-node/register test/**/*.ts",
"build_browser_dev": "browserify ./src/page.js -o ./static/bundle.js -t [ babelify --presets[env]]"
},

但是当希望启动时传入命令行参数时,ts-node没法接受命令行参数

https://www.npmjs.com/package/ts-node

然后给出段不明配置文件

不知该放那里,说得不清楚。

参考这个vscode 调试node之npm与nodemon,原来是vscode的launch.json, 自己汇总之后这样

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动程序",
//"program": "${workspaceFolder}\\src\\server.ts",
//"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"runtimeArgs": [
"-r",
"ts-node/register",
],
"args": [
"${workspaceFolder}\\src\\server.ts",
"--config=D:\\src\\overlay.yml"
]
}
]
}

这个是按F5启动调试时用的。

如果还是想npm start 用参数呢?

这样:

  "scripts": {
"build-ts": "tsc",
"start": "node -r ts-node/register src/server.ts",
"start:dev": "nodemon",
"serve": "node dist/server.js",
"test": "mocha --require ts-node/register test/**/*.ts",
"build_browser_dev": "browserify ./src/page.js -o ./static/bundle.js -t [ babelify --presets[env]]"
},

用node -r ts-node/register代替 ts-code

然后 nodemon的配置文件nodemon.json里这样:

{
"ignore": ["**/*.test.js", ".git", "node_modules"],
"watch": ["src"],
"exec": "npm start -- --server=localhost",
"ext": "ts js"
}

--加空格之后 是参数部分。这样ctrl+shift+B启动,start:dev

在src/server.ts里

//命令行参数
console.log('process.argv', process.argv);

可以收到

vscode下ts-node传入cli参数-LMLPHP

请无视现在改回windows下写码。。。主要是sublime text 3 的 ctrl+B运行脚本方便+中文显示,然后经常要写其他的方案各种杂事,各种办公软件win比较方便。

活在vscode chrome npm pipenv的世界里,操作系统之间区别不大。

将来部署时,在docker里启动直接用 npm start -- --server=XXX, --config=YYY 即可。

node的工程下各种.json的配置文件已经不少了。有点雪花式配置的意思。因为不同的组件每个都有一个配置文件,也算合理。

而且用文件配置总比用gui手工点击填写方便多了。

果然到了后端,就充满了cli,配置文件。用这样的思想组织的npm来管理前端,想想也挺有意思的。

不管了,现在配置文件写进去了,能用就行。

05-11 15:23
查看更多