npm package: @luego/gulp-shadow-files
Description: Ganerate shadow files from a array of names
Author: TI
Latest version: 4.0.1

# Gulp Shadow Files

Plugin Gulp para processar arquivos com shadow files (arquivos que começam com @) e obter dados dinâmicos.

## Instalação

```bash
npm install @luego/gulp-shadow-files
```

## Uso

O plugin agora oferece dois métodos estáticos para uso em pipes separados:

### 1. LuegoGulpShadowFiles.createFiles(params)

Processa arquivos que começam com `@` e cria novos arquivos baseados nos dados.

**Parâmetros:**
- `basePages`: Diretório base das páginas
- `baseDataLocal`: Diretório base dos dados locais
- `baseDataRemoteCache`: Diretório base do cache remoto
- `baseDataRemote`: Diretório base dos dados remotos
- `dataGlobal`: Dados globais (incluindo metas)

### 2. LuegoGulpShadowFiles.getData(params)

Obtém dados para todos os arquivos (incluindo os criados pelo createFiles).

**Parâmetros:** Mesmos parâmetros do `createFiles`.

## Exemplos

### Uso em um único pipe (recomendado)

```javascript
const gulp = require('gulp');
const LuegoGulpShadowFiles = require('@luego/gulp-shadow-files');

gulp.task('process-files', function() {
    return gulp.src('src/**/*.html')
        // Primeiro: criar arquivos novos processando @
        .pipe(LuegoGulpShadowFiles.createFiles({
            basePages: 'src',
            baseDataLocal: 'data/local',
            baseDataRemoteCache: 'data/cache',
            baseDataRemote: 'data/remote',
            dataGlobal: {
                metas: {
                    base: 'https://example.com/'
                }
            }
        }))
        // Segundo: obter dados de todos os arquivos
        .pipe(LuegoGulpShadowFiles.getData({
            basePages: 'src',
            baseDataLocal: 'data/local',
            baseDataRemoteCache: 'data/cache',
            baseDataRemote: 'data/remote',
            dataGlobal: {
                metas: {
                    base: 'https://example.com/'
                }
            }
        }))
        .pipe(gulp.dest('dist'));
});
```

### Uso em pipes separados

```javascript
gulp.task('create-files', function() {
    return gulp.src('src/**/*.html')
        .pipe(LuegoGulpShadowFiles.createFiles({
            basePages: 'src'
        }))
        .pipe(gulp.dest('temp'));
});

gulp.task('get-data', function() {
    return gulp.src('temp/**/*.html')
        .pipe(LuegoGulpShadowFiles.getData({
            basePages: 'src',
            baseDataLocal: 'data/local',
            baseDataRemoteCache: 'data/cache',
            baseDataRemote: 'data/remote',
            dataGlobal: {
                metas: {
                    base: 'https://example.com/'
                }
            }
        }))
        .pipe(gulp.dest('dist'));
});

// Executar em sequência
gulp.task('process', gulp.series('create-files', 'get-data'));
```



## Como funciona

1. **createFiles**: Processa arquivos que contêm `@` no nome e cria novos arquivos baseados nos dados
2. **getData**: Obtém dados para todos os arquivos, incluindo os recém-criados

Esta separação permite maior controle sobre o processo e melhor performance em pipelines complexos.