2015-10-10 34 views
5

Sto cercando di convertire un sito esistente da utilizzare webpack, ma tutti i percorsi esistenti richiedono sono assoluta:Come posso risolvere i percorsi obbligatori assoluti con webpack?

var Component = require('/path/to/my/component'); 

Ho letto attraverso la webpack documentation e anche trovato this answer sulla risoluzione di percorsi, ma wasn' Sono abbastanza in grado di risolvere il mio problema. Quando si imposta resolve.root secondo le istruzioni nella risposta di cui sopra, sono stato in grado di ottenere la seguente al lavoro:

var Component = require('./path/to/my/component'); 
var Component = require('path/to/my/component'); 

Tuttavia, ancora non riesco a capire come ottenere il percorso assoluto di lavoro e vorrei davvero preferisco non dover passare e aggiornare tutti i miei percorsi. Ecco la struttura del sito:

/app 
    /assets 
    /javascripts 
     /build 
     package.js 
     index.js 
/node_modules 

webpack.config.js:

var JS_ROOT = __dirname + '/app/assets/javascripts'); 

module.exports = { 
    entry: JS_ROOT + '/index', 
    output: { 
    path: JS_ROOT + '/build', 
    filename: 'package.js' 
    }, 
    ... 
    resolve: { 
    root: JS_ROOT 
    } 
}; 

L'errore continuo a ricevere è:

Module not found: Error: Cannot resolve 'file' or 'directory' /path/to/component in /Users/<username>/<ProjectRoot>/app/assets/javascripts 

Che cosa sto facendo di sbagliato?

+0

E' sembra [questo è fondamentalmente ciò che voglio] (https://webpack.github.io/docs/resolving.html#resolving-an-solute-path). Sono confuso su dove definire il campo 'main', però. – ericgio

+0

hai trovato una soluzione? – mpolci

+0

Probabilmente non molto utile, ma ho finito per fare solo un codice mod e cambiando i percorsi per essere: 'var Componente = require ('percorso/a/mio/componente');' – ericgio

risposta

2

L'opzione di configurazione resolve.root potrebbe essere ciò che si sta cercando. È documentato qui: http://webpack.github.io/docs/configuration.html#resolve-root

resolve.root La directory (percorso assoluto) che contiene i moduli. Può anche essere una matrice di directory. Questa impostazione deve essere utilizzata per aggiungere singole directory al percorso di ricerca.

Deve essere un percorso assoluto! Non passare qualcosa come ./app/modules.

Esempio:

percorso var = require ('percorso');

// ... risolutezza: {root: [ path.resolve (' ./ app/modules '), path.resolve (' ./ vendor/modules')]}

+0

'path.resolve()' risolve un percorso alla sua forma assoluta - vedi https://nodejs.org/docs/latest/api/path.html#path_path_resolve_from_to – Sacho

Problemi correlati