Как скопировать не-ts файлы в dist при сборке машинописи? - PullRequest
2 голосов
/ 19 февраля 2020

У меня есть почтовый модуль в папке с такой структурой:

- Mail
  - templates
      - <Handlebars files>
  - mail.module.ts

Когда я собираю (компилирую) проект TypeScript, моя папка template не включается в папку build. Как переместить файлы такого типа в dist при сборке?

Отличается ли она для разработки от производственных сборок?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

Компилятор TS не обрабатывает файлы, отличные от TypeScript или JS (например, .ts, .js, .tsx, et c.).

Один из способов сделать это просто запуск cp для копирования этих файлов после компиляции Nest JS. В вашем package.json замените строку

"build": "nest build",

на

"build": "nest build && cp ./Mail/templates ./build",

В идеале я бы переключился на Webpack (или аналогичный) для переноса TypeScript и копирования артефактов. Nest Js имеет базовый c пример того, как собрать с помощью Webpack здесь . Чтобы расширить его до фазы «копирования», установите пакет copy-webpack-plugin npm и добавьте эти дополнения в файл конфигурации webpack:

const copyFiles = require('copy-webpack-plugin');
// ... omitted for abbreviation

module.exports = function(options) {
   return {
   // ... omitted for abbreviation
   ,
    plugins: [
      // ... omitted for abbreviation
      new copyFiles([
            { from: 'Mail/templates', to: 'templates' }
        ])
    ]
}
0 голосов
/ 08 мая 2020

Вы также можете сделать это, добавив свойство актива в nest-cli. json, как указано в документации .

Для вашего случая вы можете попробовать что-то вроде этого :

"assets":["**/Mail/templates/*"]

Или, если все ваши шаблоны имеют определенный c тип файла (я предполагаю, что он называется .template), это также должно работать:

"assets":["**/*.template"]

Второй пример будет Скопируйте все файлы типа .template из всех подкаталогов в папку dist с такой же структурой папок при запуске сборки nest. Точно так же вы можете использовать это для копирования любого типа файла по вашему выбору (. json, .proto, et c), заменив .template в шаблоне glob.

...