• vscode下ts-node传入cli参数


    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 using require('ts-node').register({ /* options */ }). You can also use file shortcuts - node -r ts-node/register or node -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 with node -r ts-node/register instead of the ts-node CLI.

    然后给出段不明配置文件

    Visual Studio Code

    Create a new node.js configuration, add -r ts-node/register to node args and move the program to the args list (so VS Code doesn't look for outFiles).

    {
        "type""node",
        "request""launch",
        "name""Launch Program",
        "runtimeArgs"[
            "-r",
            "ts-node/register"
        ],
        "args"[
            "${workspaceFolder}/index.ts"
        ]
    }

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

    参考这个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来管理前端,想想也挺有意思的。

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

  • 相关阅读:
    日期插件,年月,年月日,时分,年月时分
    <context:annotation-config/>
    Autowired注解
    context:component-scan 注解的扫描
    Servlet 是什么 有哪些类
    spring RestTemplate 出现 NoHttpResponseException 和 ConnectionTimeoutException
    java 动态加载groovy 脚本
    java 如何实现文件变动的监听
    英文文档地址
    Resource ResourceLoader
  • 原文地址:https://www.cnblogs.com/xuanmanstein/p/9946629.html
Copyright © 2020-2023  润新知