2013-11-21 11 views
9

sto lottando con la configurazione compito grugnito grunt-assemble che assomiglia a questo:Percorsi delle pagine generate con il montaggio di

assemble: { 
    options: { 
    flatten: false, 
    expand: true, 

    assets: '', 

    layout: 'default.hbs', 
    layoutdir: 'templates/layouts', 

    partials: ['templates/includes/*.hbs'], 
    helpers: ['templates/helpers/*.js'], 
    data: ['templates/data/*.{json,yml}'] 
    }, 

    dev: { 
    src: 'templates/pages/**/*.hbs', 
    dest: 'build/' 
    } 

L'impalcatura dei modelli di progetto per assemble.io assomiglia:

templates 
├── helpers 
├── includes 
│   ├── page-footer.hbs 
│   ├── page-header.hbs 
│   └── scripts.hbs 
├── layouts 
│   └── default.hbs 
└── pages 
    ├── en 
    │   └── index.hbs 
    ├── fr 
    │   └── index.hbs 
    └── index.hbs 

Il mio desiderio è andare a prendere qualcosa di simile:

build 
├── en 
│   └── index.html 
├── fr 
│   └── index.html 
└── index.html 

Ma invece io ottenere qualcosa di simile:

build 
└── templates 
    └── pages 
     ├── en 
     │   └── index.html 
     ├── fr 
     │   └── index.html 
     └── index.html 

Ho provato un paio di (molto in realtà) di combinazioni (con il flatten e expand nonché le cwd opzioni), ma mi sono bloccato.

L'utilizzo di flatten ha come conseguenza di sovrascrivere i file index.html.

Così ho effettivamente fare il rendering in una directory tmp e quindi spostare i file nella directory accumulo. Questa soluzione non mi piace perché, il page.assets è ancora rotto (il suo valore sarebbe ../../.., per l'indice root.html).

risposta

8

grugnito-assemblare

(Si noti che queste informazioni si riferisce specificamente a grugnire montare 0.4.x, che è il grugnito plug per assemblare ma ha un'API completamente diverso)

@doowb ha quasi bene, prova ad aggiungere expand: true e ext: '.html' al file di configurazione:

assemble: { 
    options: { 
    flatten: false, 
    expand: true, 

    assets: '', 

    layout: 'default.hbs', 
    layoutdir: 'templates/layouts', 

    partials: ['templates/includes/*.hbs'], 
    helpers: ['templates/helpers/*.js'], 
    data: ['templates/data/*.{json,yml}'] 
    }, 

    dev: { 
    files: [ 
     {expand: true, cwd: 'templates/pages/', src: '**/*.hbs', dest: 'build/', ext: '.html'} 
    ] 
    } 
} 

prendere anche esaminare https://github.com/assemble/assemble-contrib-permalinks

assemblare 0.7.x

raccolte sono prima classe nel montare 0.7.0, come sono plugin, quindi le cose come generare collegamenti relativi, costruzione impaginazione, e creando i permalink personalizzati sono molto più facili da fare.

Se si utilizza assemblare 0.7.xe versioni successive, assemble-permalinks è il plug-in che si desidera utilizzare.

+2

Grazie mille! Stavo guardando nel posto giusto, ma mi confonde un po 'con l'oggetto 'files' o altra possibile sintassi. – zeropaper

+0

Come sarebbe fatto usando node assemble @jonschlinkert @doowb? Sarebbe qualcosa come ... app.pages ([percorso per le pagine], {[file config]} o è solo un problema? –

2

Hai provato a usare l'oggetto espanso files per target grunt con la proprietà cwd?

assemble: { 
    options: { 
    flatten: false, 
    expand: true, 

    assets: '', 

    layout: 'default.hbs', 
    layoutdir: 'templates/layouts', 

    partials: ['templates/includes/*.hbs'], 
    helpers: ['templates/helpers/*.js'], 
    data: ['templates/data/*.{json,yml}'] 
    }, 

    dev: { 
    files: [ 
     { cwd: 'templates/pages/', src: '**/*.hbs', dest: 'build/' } 
    ] 
    } 
} 
+1

L'ho fatto davvero. ha ottenuto errori sui file non trovati, assomiglia a quello Errore: impossibile leggere il file "index.hbs" (Codice errore: ENOENT). in Object.util.error (..../node_modules/grunt/lib/grunt/util.js: 57: 39) in Object.file.read (..../node_modules/grunt/lib/grunt/file.js: 237: 22) in buildPage (..../node_modules/assemble/tasks/assemble.js:289:78) alle ..../node_modules/assemble/tasks/assemble.js: 345: 23 – zeropaper

Problemi correlati