Плагин Grunt Copy не может настроить - PullRequest
0 голосов
/ 06 июля 2018

Я новичок в grunt, и для своего проекта я использую плагин grunt-contrib-copy. Моя структура папок:

enter image description here

module.exports = function(grunt){

const sass = require('node-sass');
require('load-grunt-tasks')(grunt);

grunt.initConfig({
    sass: {
        options: {
        implementation: sass,
    }, 
      dist: {
        files: [{
          expand: true,
          cwd: 'sass',
          src: ['*.scss'],
          dest: 'assets/css',
          ext: '.css'
        }]
      }
    },

    cssmin: {
        target: {
          files: [{
            expand: true,
            cwd: 'assets/css',
            src: ['*.css', '!*.min.css'],
            dest: 'build/assets/css',
            ext: '.min.css'
          }]
        }
      },

      copy:{
          html:{
              files:[{
                  expand:true,
                  dot:true,
                  cwd:'components',
                  src:['**/*.html'],
                  dest:'build/'
              }]
          }
      }
  });



  grunt.registerTask('default', ['sass','cssmin','copy']);
}

Я хочу скопировать index.html и папку компонентов в папку сборки, но я не могу ее настроить. Я могу скопировать файл index.html или только папку компонента, но не могу скопировать оба. Может кто-нибудь, пожалуйста, помогите мне в этом. Это было бы огромной помощью. Заранее благодарим.

1 Ответ

0 голосов
/ 06 июля 2018

Есть несколько способов достичь этого.

Настройте задачу copy на одно из следующих действий. Вам вероятно нужно только следовать Решение A .

Примечание: Решение A и B , оба достигают одинакового результата. Решение C дает немного другой результат:


Раствор А

Используя одну цель с именем html, вы можете сделать это:

copy:{
  html:{
    files:[{
      src:['components/**', 'index.html'],
      dest:'build/'
    }]
  }
}

Примечание. В массиве src над первым элементом, который читает 'components/**', используется шаблон Globbing (т.е. часть **). Это означает, что включает в себя все элементы из папки components и включает в себя все подпапки на несколько уровней при копировании.


Раствор B

Или, используя две цели; один с именем html и другой с именем components вы можете сделать это:

copy:{
  html:{
    files:[{
      src:'index.html',
      dest:'build/'
    }]
  },
  components:{
    files:[{
      src:'components/**',
      dest:'build/'
    }]
  }
}

Это очень похоже на Решение A , однако оно использует две цели вместо одной, что может быть более уместным, поскольку имена целей фактически указывают, что они копируют.


Раствор C

Однако, если вы на самом деле не хотите, чтобы папка components была скопирована в build, и вместо этого вы хотите, чтобы копировалось только содержимое папки components, вы можете сделать это:

copy:{
  html:{
    files:[{
      src:'index.html',
      dest:'build/'
    }]
  },
  components:{
    files:[{
      expand:true,
      cwd: 'components',
      src:'**',
      dest:'build/'
    }]
  }
}

Примечание: Дополнительную информацию см. В разделе files документации grunt:

...