Как связать другие папки с текущим проектом в VSCODE? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть VSCode для разработки узлов.

У меня есть общая база кода, называемая "утилитами", которая находится в папке

  • / workspace / common / util

В папке рабочего пространства у меня есть другие папки приложений, такие как

  • / workspace / service-1
  • / workspace / service-2
  • / workspace / service-3

Все эти приложения должны использовать функции из утилиты

Мне не хочется создавать служебную папку для каждого из этих 3 приложений.

Однако, как я могу связать эти 3 приложения с папкой утилит, так что мне нужно только чтобы основная утилита находилась в одном месте?

Прилагается запуск. json

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}/src/app.js"
        }
    ]
}

PS: Позже мне также нужно развернуть приложения в AWS Lambda, как я могу включить эту папку утилит в мой serverless.yml, чтобы эта папка также была включена при развертывании кода?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Я провел некоторое исследование и также спросил несколько человек, похоже, что общая рекомендация - это npm общий код и включить его в пакет. json

Однако, npm открыт Платформа, на которой я не хочу, чтобы мой код был доступен через publi c. И если мне нужно быть частным репозиторием, нужно платить ежемесячно.

Я заканчиваю тем, что создаю отдельную папку в VSCode для хранения всего общего кода, а затем создаю задачу в каталоге .vscode, называемую задачами. json со следующим содержимым:

{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "copy_utility_source",
        "type": "shell",
        "command": "cp -R ../../utility/src/ ./src/"
      }
    ]
  }

Затем в моем запуске приложения. json Я включаю следующий код:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch applicationService",
      "type": "node",
      "console": "integratedTerminal",
      "preLaunchTask": "copy_utility_source",
      "request": "launch",
      "program": "${workspaceFolder}/src/app.js",
      "cwd": "${workspaceFolder}/src"
    }
  ]
}

При этом мне нужно только поддерживать общий код в одном месте, в то время как общий код будет автоматически развернут в приложении, которое запускается.

0 голосов
/ 02 мая 2020

Вам просто нужно экспортировать нужные функции из утилит, а затем импортировать их в службы, которые вам не нужны для репликации кода. Кроме того, при автоматическом развертывании он будет извлекать любой необходимый код из библиотек libs, если это ваши собственные модули. (Для узловых модулей просто сделайте: npm install 'the-node-module' или включите в ваш пакет. json и установите сначала с npm i)

Если вы используете webpack или browserify для переноса / связывания вашего кода, вы может использовать синтаксис экспорта / импорта (имейте в виду, что при отладке лямбда-кодов с помощью aws SAM local cli - что я бы определенно рекомендовал) его немного проще настроить, просто используя синтаксис require, поэтому экспортировать модули / функции из папки utils , вы можете использовать:

const myUtilFunc = () => {return 'some utilFunc code here'}; module.exports = myUtilFunc;

А при импорте функции в вашу службу используйте: const myUtilFunc = require('../common/util'); или деструктурируйте ее с помощью const {myUtilFunc} = require('../common/util') в зависимости от того, что было экспортировано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...