2017-09-09 4 views
0

Je suis très nouveau pour webpack et étoffes, je besoin d'une solution à base de séparer href de index.html et src pour bundle.js, pour le développement et la production que les deux sont différents.En utilisant Webpack HtmlWebpackPlugin

pour le développement

base de href = localhost

src = /bundle.js

Pour la production

de base href = serveur u rl

src = /dist/bundle.js

Pour résoudre le problème ci-dessus, je suis en train d'utiliser HtmlWebpackPlugin, suivant est le webpack.config.js réglage

var HtmlWebpackPlugin = require('html-webpack-plugin'); 
module.exports = { 
    entry: [ 
    './src/index.js' 
    ], 
    output: { 
    path: __dirname + "/dist", 
    publicPath: '/', 
    filename: 'bundle.js' 
    }, 
    module: { 
    rules: [ 
    { 
    exclude: /node_modules/, 
    use:[ 
     { 
     loader: 'babel-loader', 
     options:{ 
      presets: ['react', 'es2015', 'stage-1'] 
     } 
     }, 
    ] 
    }, 
    plugins: [ 
     new webpack.ProvidePlugin({ 
      $: "jquery", 
      jQuery: "jquery" 
     }), 
     new HtmlWebpackPlugin({ 
      template:'index.html', 
      inject:'head', 
      hash: true, 
      baseHref: 'http://localhost:8030/' 
     }) 
    ] 
}; 

et suivant est la façon dont j'essaie d'utiliser baseHref en index.html

<html> 
    <head> 
    <% if (htmlWebpackPlugin.options.baseHref) { %> 
     <base href="<%= htmlWebpackPlugin.options.baseHref %>"> 
    <% } %> 

    /* 
     Several css are defined with relative path here 
    */ 
    </head> 
    <body> 
    <div class="container-fluid"></div> 
    </body> 
    <script src="/bundle.js"></script> 
</html> 

Je reçois l'erreur suivante en utilisant les paramètres ci-dessus

enter image description here

je besoin d'aide pour savoir ce que je fais mal ici?

Toute aide serait grandement appréciée.

Merci.

+0

Est-ce que 'html-loader' est installé? –

+0

Non, il n'est pas installé, cela fait-il une différence @Prakashsharma? – iphonic

+0

Je dirais plutôt utiliser le modèle 'ejs'. Vous n'avez pas besoin de chargeur pour cela. https://github.com/jantimon/html-webpack-plugin/blob/master/docs/template-option.md –

Répondre

1

https://github.com/jantimon/html-webpack-plugin/issues/212

Cette question sur Github suggère de renommer votre fichier "index.html" à "index.ejs".

Cela semble être parce que webpack essaie d'appliquer le transpilateur Babel à votre fichier html et il échoue, l'extension ".ejs" l'empêchera.

+0

Je l'ai corrigé, le problème manquait 'test:/\. Js $ /,' pour 'babel-loader' cela a fonctionné pour html, bien que je l'ai changé en ejs maintenant. Merci pour l'aide. – iphonic

+0

J'allais le suggérer, mais votre config n'avait pas de babel loader! –

+0

Oui, il a, je n'ai pas ajouté dans ma question, je vais mettre à jour .. – iphonic