在保留文件夹结构的同时将html和css文件复制到dist

Ram*_*ama 1 linux macos npm npm-publish angular

我正在尝试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
Run Code Online (Sandbox Code Playgroud)

现在,我的“ 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"
Run Code Online (Sandbox Code Playgroud)

运行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
Run Code Online (Sandbox Code Playgroud)

关于如何在保持子目录结构的同时将src / web及其子目录中的html和css文件复制到dist / web的任何建议?

我基本上是在寻找可以附加到dist命令以复制html和css文件的命令。我使用OSX,但理想的命令是在OSX和Windows上均可使用的命令。

Rob*_*obC 6

要实现此跨平台,请首先安装copyfiles软件包:

$ npm i -D copyfiles

然后在其中package.json添加以下copy脚本:

...
"scripts": {
  ...
  "copy": "copyfiles -u 2 \"./src/web/**/*.{css,html}\" \"./dist/web/\""
},
...
Run Code Online (Sandbox Code Playgroud)

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/\""
},
...
Run Code Online (Sandbox Code Playgroud)