Nodejs / Gulp не копирует все файлы в папку dist - PullRequest
0 голосов
/ 12 октября 2019

Gulp должен скопировать все подпапки и файлы в дист. Но он копирует только половину из них, некоторые папки будут игнорироваться, даже если я изменю их имена и т. Д. (Без специальных символов, такая же структура подпапок, как у того, который был скопирован правильно ...) - ничего не получалось. Я просто не вижу никакой картины в этом.

Нет сообщения об ошибке при запуске gulp. Ничего, что помогло бы мне найти ошибку.

Это мой gulpfile.babel.js:

import path from 'path'
const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const babel = require('gulp-babel');
const concat = require('gulp-concat');
import del from 'del';
import nodemon from 'gulp-nodemon';

const paths = {
  js: ['./**/*.js', '!dist/**', '!node_modules/**', '!coverage/**', '!./*.test.js'],
  statics: ['./package.json', './.gitignore', './.env', './templates/**/**/*'],
  resources: ['./resources/**/*'],
  public: ['./public/**/*'],
  templates: ['./templates/**/**/**/*'],
  tests: './server/tests/*.js',
}


gulp.task('clean', function (done) {
  del.sync(['dist/**', 'dist/.*', 'coverage/**', '!dist', '!coverage'])
  done()

});

gulp.task('copy', function (done) {
  gulp.src(paths.statics).pipe(gulp.dest('dist'))
  gulp.src(paths.resources).pipe(gulp.dest('dist/resources'))
  gulp.src(paths.public).pipe(gulp.dest('dist/public'))
  gulp.src(paths.templates).pipe(gulp.dest('dist/templates'))
  done()
})
gulp.task('build', function (done) {
  gulp.src([...paths.js, '!gulpfile.babel.js'], { base: '.' })
    .pipe(babel(
      {
        presets: ['@babel/env']
      }
    ))
    .pipe(gulp.dest('dist'))
  done() 
})
gulp.task('start', function (done) {
  nodemon({
    script: path.join('dist', 'index.js'),
    delay: 1000,
    ext: 'js',
    tasks: ['clean', 'copy', 'build'],
    ignore: ['node_modules/**/*.js', 'dist/**/*.js'],
  })
  done()
})
gulp.task('serve', gulp.series('copy', 'build', 'start'))
gulp.task('default', gulp.series('serve'))

много папок, например папка dashboard в routes,не копирует в файл dist.

Это моя структура:

- backend
- > server
- > server > routes
- ...
- > server > routes > dashboard
- > server > routes > dashboard > *.js 
- ...
- gulpfile.babel.js

1 Ответ

1 голос
/ 12 октября 2019

Ваша задача copy создает несколько потоков с несколькими вызовами на gulp.src. Правильный способ их объединения - использовать merge-stream:

const mergeStream =   require('merge-stream');

gulp.task('copy', function () {
  return mergeStream(
    gulp.src(paths.statics).pipe(gulp.dest('dist')),
    gulp.src(paths.resources).pipe(gulp.dest('dist/resources')),
    gulp.src(paths.public).pipe(gulp.dest('dist/public')),
    gulp.src(paths.templates).pipe(gulp.dest('dist/templates'))
  );
})

В качестве альтернативы, поскольку вы просто копируете структуру своей папки в папку dist, вы также можете сделать это:

gulp.task('copy', function () {
  return gulp.src([...paths.statics, 
                   ...paths.resources,
                   ...paths.public,
                   ...paths.templates], 
                   {base: '.'})
          .pipe(gulp.dest('dist'))
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...