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
Programmatic
You can require
ts-node
and register the loader for future requires by usingrequire('ts-node').register({ /* options */ })
. You can also use file shortcuts -node -r ts-node/register
ornode -r ts-node/register/transpile-only
- depending on your preferences.Note: If you need to use advanced node.js CLI arguments (e.g.
--inspect
), use them withnode -r ts-node/register
instead of thets-node
CLI.
然后给出段不明配置文件
Visual Studio Code
Create a new node.js configuration, add
-r ts-node/register
to node args and move theprogram
to theargs
list (so VS Code doesn't look foroutFiles
).
{
}
不知该放那里,说得不清楚。
参考这个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);
可以收到
请无视现在改回windows下写码。。。主要是sublime text 3 的 ctrl+B运行脚本方便+中文显示,然后经常要写其他的方案各种杂事,各种办公软件win比较方便。
活在vscode chrome npm pipenv的世界里,操作系统之间区别不大。
将来部署时,在docker里启动直接用 npm start -- --server=XXX, --config=YYY 即可。
node的工程下各种.json的配置文件已经不少了。有点雪花式配置的意思。因为不同的组件每个都有一个配置文件,也算合理。
而且用文件配置总比用gui手工点击填写方便多了。
果然到了后端,就充满了cli,配置文件。用这样的思想组织的npm来管理前端,想想也挺有意思的。
不管了,现在配置文件写进去了,能用就行。