копировать файлы 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.


person RKG    schedule 22.03.2017    source источник


Ответы (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/\""
},
...
person RobC    schedule 23.03.2017