Копировать html и css файлы в dist при сохранении структуры папок

Я пытаюсь npm опубликовать мое приложение angular2, которое имеет следующую структуру.

search-app
  config
  node_modules
  src
    api
      --index.ts
      --ping.ts
      --search.ts  
    model
      --index.ts
      --model.ts
    web
      app
        ping
          --index.ts
          --ping.css
          --ping.html
          --ping.ts
        search
          --index.ts
          --search.css
          --search.html
          --search.ts
        --app.css
        --app.html
        --app.module.ts
        --app.ts
      --index.html
      --index.ts
package.json
tsconfig.json

Теперь моя команда "npm run dist"

"dist": "npm run rimraf -- dist && tsc src/index.ts src/web/index.ts src/model/index.ts -m commonjs --outDir dist --sourcemap --target es6 -d --pretty --noImplicitAny --experimentalDecorators --skipLibCheck"

Запуск npm run dist создаст следующий каталог dist.

search-app
  dist
    api
      --*.d.ts
      --*.js 
    model
      --*.d.ts
      --*.js
    web
      app
        ping
          --*.d.ts
          --*.js
        search
          --*.d.ts
          --*.js
        --*.d.ts
        --*.js
      --index.d.ts
      --index.js

Любой совет, как скопировать html и css файлы из src / web и его подкаталогов в dist / web при сохранении структуры подкаталогов?

Я в основном ищу команду, которую я могу добавить к моей команде dist для копирования файлов html и css. Я использую OSX, но идеальной командой будет то, что работает как на OSX, так и на Windows.

1 ответ

Решение

Для достижения этой кроссплатформенности сначала установите пакет copyfiles:

$ npm i -D copyfiles

Затем в package.json добавить следующее copy сценарий:

...
"scripts": {
  ...
  "copy": "copyfiles -u 2 \"./src/web/**/*.{css,html}\" \"./dist/web/\""
},
...

Позвоните copy скрипт по цепочке && npm run copy до конца вашего существующего dist скрипт, как показано в следующем примере:

...
"scripts": {
  "dist": "npm run rimraf -- dist && tsc src/index.ts src/web/index.ts src/model/index.ts -m commonjs --outDir dist --sourcemap --target es6 -d --pretty --noImplicitAny --experimentalDecorators --skipLibCheck && npm run copy",
  "copy": "copyfiles -u 2 \"./src/web/**/*.{css,html}\" \"./dist/web/\""
},
...
Другие вопросы по тегам