2016-03-08 14 views
6

Ho guardato allo stesso modo ma non ho trovato una risposta concerete che risolvesse il mio problema. Non riesco a trovare il file bundle.js anche se sto specificando dove deve essere emesso e tutto funziona nel browser. Capisco che il server webpack-dev sta caricando i file dalla memoria e non viene scritto nulla sul disco, come posso ottenere il file da costruire e aggiunto alla directory specificata nella proprietà di output nel file di configurazione?bundle.js mancante da webpack build quando si utilizza webpack-dev-server

Ecco il mio package.json:

{ 
    "name": "redux-simple-starter", 
    "version": "1.0.0", 
    "description": "Simple starter package for Redux with React and Babel support", 
    "main": "index.js", 
    "repository": "[email protected]:StephenGrider/ReduxSimpleStarter.git", 
    "scripts": { 
    "start": "./node_modules/webpack-dev-server/bin/webpack-dev-server.js -- content-base build" 
     }, 
     "author": "", 
     "license": "ISC", 
     "devDependencies": { 
     "babel-core": "^6.2.1", 
     "babel-loader": "^6.2.0", 
     "babel-preset-es2015": "^6.1.18", 
     "babel-preset-react": "^6.1.18", 
     "react-hot-loader": "^1.3.0", 
    "webpack": "^1.12.9", 
    "webpack-dev-server": "^1.14.0" 
    }, 
    "dependencies": { 
    "babel-preset-stage-1": "^6.1.18", 
    "react": "^0.14.3", 
    "react-dom": "^0.14.3", 
    "react-redux": "^4.0.0", 
    "redux": "^3.0.4" 
    } 
    } 

webpack config:

var path = require('path'); 
    var webpack = require('webpack'); 

    module.exports = { 
    entry: [ 
     'webpack-dev-server/client?http://localhost:8080', 
     'webpack/hot/only-dev-server', 
     './src/index.js' 
    ], 
    output: { 
     path: path.join(__dirname, 'assets'), 
     publicPath: '/', 
     filename: 'bundle.js' 
    }, 
    module: { 
     loaders: [{ 
     exclude: /node_modules/, 
     loader: 'babel' 
     }] 
    }, 
    resolve: { 
     extensions: ['', '.js', '.jsx'] 
    }, 
    devServer: { 
     contentBase: './' 
    }, 

    plugins: [ 
     new webpack.HotModuleReplacementPlugin() 
    ] 
    };  
+2

Credo di aver visto prima - Non credo che quando si esegue 'webpak-dev-server' che bundle.js sia effettivamente creato, ma piuttosto semplicemente archiviato in memoria. Sospetto che se esegui il semplice comando webpack di vanilla che crea il progetto, vedrai il tuo 'bundle.js' nella tua directory' assets'. Di nuovo, prova a eseguire solo 'webpack' dal tuo terminale. – lux

+1

@lux spot on! Avresti dovuto metterlo come risposta! – Abdi

risposta

4

Questo pacchetto Web plugin obbliga il server a scrivere il pacchetto su disco.

Anche se sono d'accordo con Austin e lux, se è necessario disporre del file su disco, chiamare direttamente il webpack.

5

Quando si utilizza il server dev, l'uscita è disposto su esso. Quindi non lo vedrai effettivamente tra i tuoi file. Dal tuo file index.html dovrai caricarlo dal server.

Ad esempio, per la mia app carico nel server di sviluppo, i file del mio fornitore e quindi il mio codice personale.

<script src="http://localhost:8080/webpack-dev-server.js"></script> 
<script src="http://localhost:8080/build/vendor.js"></script> 
<script src="http://localhost:8080/build/app.js"></script> 

E qui è la parte rilevante della mia configurazione del webpack. Ci sono alcuni bit legacy inutili da quando lo stavo caricando anche da un bundle statico di build.

app: [ 
     'webpack/hot/dev-server', 
     'webpack-dev-server/client?http://localhost:8080', 
     './client/index.js' 
     ] 

}, 
output: { 
    path: __dirname + '/client/build', 
    publicPath: '/build/', 
    filename: '[name].js', 
    pathinfo: true 
}, 
+0

So che sta caricando dal server del webpack, ma vorrei il file attuale nella mia directory in modo che io possa usarlo in un altro ambiente, se questo ha senso. – Abdi

+0

Sembra più un problema di progettazione, piuttosto che un problema di webpack. Riconsidererei cosa stai cercando di fare in quel caso se non puoi semplicemente fare riferimento alla build dal server. –

+0

@AustinShoecraft immagina semplicemente dev e prod enviroment. In prod, non hai inserito file js in linea, ma in dev potresti voler ricaricare a caldo. Se servi html dal server, non puoi utilizzare il server webpack dev perché non cambia i file sul disco. –

0

Si può anche dire al webpack di guardare utilizzando una bandiera nella configurazione. Questo genererà il file fascio

module.exports = { 
    watch: true, 
}; 
0

Sostituisci il tuo script oggetto di file di package.json con il seguente:

"scripts": { 
    "start": "npm run build", 
    "build": "webpack -p && ./node_modules/webpack-dev-server/bin/webpack-dev-server.js -- content-base build" 
}, 

Quindi, eseguire $ npm start

Problemi correlati