2016-03-21 6 views
2

Ich habe die folgende Ordnerstruktur:Erhaltung Ordnerstruktur im Ausgabeverzeichnis mit webpack

/index.html 
/app/index.tsx 

mit webpack Nach Bündeln, ich möchte folgende ouput Verzeichnis mit den bundle.js in die index.html injiziert haben,

/dist/index.html 
/dist/app/bundle.js 
/dist/app/bundle.js.map 

ich habe folgende webpack Konfiguration

var webpack = require("webpack") 
var HtmlWebpackPlugin = require("html-webpack-plugin"); 

module.exports = [ 
    { 
     entry: "./app/index", 
     output: { 
      path: "./dist/app", 
      filename: "bundle.js" 
     }, 
     devtool: "source-map", 
     resolve: { 
      extensions: ["", ".tsx", ".ts", ".js"] 
     }, 
     plugins: [ 
      new webpack.optimize.UglifyJsPlugin(), 
      new HtmlWebpackPlugin({ 
       "filename": "./index.html", 
       "template": "html!./index.html" 
      }) 
     ], 
     module: { 
      loaders: [ 
      { test: /\.tsx?$/, loader: "ts-loader" }, 
      ] 
     } 
    }, 
    { 
     output: { 
      path: "./dist", 
      filename: "bundle.js" 
     }, 
     plugins: [ 
      new HtmlWebpackPlugin({ 
       "filename": "./index.html", 
       "template": "html!./index.html" 
      }) 
     ]  
    } 
] 

Es scheint zu funktionieren, aber das Skript bundle.js wird nicht wie erwartet in die index.html injiziert. Das HtmlWebpackPlugin soll dies tun. Was mache ich falsch?

+0

Hat Ihr '/ index.html' das Templat enthalten' HtmlWebpackPlugin' erwartet als in ihrer Basis-Vorlage.? Andernfalls wird der Skriptabschnitt nicht geschrieben. –

+0

Ja. Ich kann die Konfiguration neu schreiben, in der das Skript injiziert wird, aber die Ordnerstruktur wird nicht erhalten – Chad

+0

Wenn Sie nicht webpack-dev-server verwenden, können Sie Antwort hier finden: http://stackoverflow.com/questions/36106276/how-to- searched-index-html-and-assets-in-webpack-dev-server/36106310? noredirect = 1 –

Antwort

2

Dies ist ähnlich WebpackHtmlPlugin issue #234.

Von https://github.com/webpack/docs/wiki/configuration#outputpublicpath

output.publicPath Die publicPath geben die öffentliche URL-Adresse der die Ausgabedateien, wenn sie in einem Browser verwiesen.

Was Sie tun können, ist die 'app' Ordnernamen der Ausgabedatei hinzuzufügen:

module.exports = { 
    output: { 
    filename: "app/[name]-[hash].js", 
    path: "dist", 
    publicPath: "" 
    }, 
    plugins: [ 
    new HtmlWebpackPlugin({ 
     "template": "html!./index.html" 
    }), 
    ], 
} 
+0

Das war genau das. Ich wusste nicht, wie ich die Frage formulieren sollte. Vielen Dank! – Chad

+0

das genau was ich will, vielen Dank – yussan