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無法接受命令行參數node

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

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.chrome

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.docker

而後給出段不明配置文件npm

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).json

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

不知該放那裏,說得不清楚。segmentfault

參考這個vscode 調試node之npm與nodemon,原來是vscode的launch.json, 本身彙總以後這樣windows

{
    // 使用 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來管理前端,想一想也挺有意思的。

無論了,如今配置文件寫進去了,能用就行。

相關文章
相關標籤/搜索