2016-05-17 18 views
5

Ho un progetto configurato in questo modo e sto cercando di richiedere file-a.js da file-b.js.Utilizzo di webpack e babel con file dalla directory principale del progetto

project-name/ 
    node_modules/ 
    src/ 
    file-a.js 
    tools/ 
    tool-name/ 
     node_modules/ 
     src/ 
     file-b.js 
     webpack.config.js 
     package.json 
    package.json 

La mia configurazione webpack 1.13.0 stava lavorando fino a quando ho aggiunto babel-loader 6.2.4 con babel-preset-es2015 6.6.0. Quindi ho iniziato a ricevere messaggi di errore.

ERROR in /home/dan/dev/dan/project-name/src/file-a.js Module build failed: Error: Couldn't find preset "es2015" relative to directory "/home/dan/dev/dan/project-name/src"

Ora ho la sensazione che questo sta accadendo perché è alla ricerca di babel-preset-es2015 in alto package.json. Posso cancellare questo errore installandolo a quel livello, ma poi ricevo un messaggio simile sul modulo babel non presente.

Ho provato tutti i tipi di cose, ho collegato la directory superiore src al progetto interno, ho usato resolve.root e resolve.alias per provare a risolvere manualmente la cartella senza il percorso nidificato. Usato context per impostare la radice del progetto come cartella esterna, ma ha comunque rilevato il valore errato node_modules.

Come posso forzare il webpack per utilizzare la cartella node_modules corretta?

risposta

1

Per impostazione predefinita, Webpack è in ./node_modules, ../node_modules e ../../node_modules.

per forzarlo utilizzare solo una directory specifica, è possibile impostare un percorso assoluto per la proprietà del modulo modulesDirectories nella sezione resolve:

module.exports = { 
    // ... 
    resolve: { 
    modulesDirectories: [path.join(__dirname, 'node_modules')] 
    } 
} 

Maggiori dettagli sul moduleDirectoriesin webpack's documentation