J'essaye d'utiliser webpack pour gérer la construction d'une application électronique. Je voudrais avoir un index.html qui utilise des balises de script pour importer/exiger un fichier de réaction client.js
, et avoir ce fichier client.js et ses fichiers requis nécessitent l'application entière.webpack - grouper/copier tous les assets pour créer ou dist un dossier
Ma structure de dossier ressemble à ceci:
Project
|
| --/app
|
| ----/gui
| ------/flux
| ------/fonts
| ------/html
| ------/images
| ------/react
|
| ----/lib
| ------ /custom-modules ...
| ----package.json (application)
|
|
| --/dist
| .babelrc
| webpack.config.js
| package.json (dev)
Je voudrais développer l'application dans ./app, exécutez webpack ou webpack-dev-serveur et une copie complète et fonctionnelle de l'application et transpiled minifié en ./dist.
morceau pertinent de Webpack.config.js:
module.exports = {
context: path.join(__dirname, '/app'),
devtool: debug ? 'inline-sourcemap' : null,
entry: {
main: './webpack-hook.js'
},
output: {
publicPath: '/assets/',
path: path.join(__dirname, '/dist/'),
filename: 'js/gui.js'
},
module: {
loaders: [
{
test: /\.js?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['react', 'es2015', 'stage-0'],
plugins: ['react-html-attrs', 'transform-class-properties', 'transform-decorators-legacy']
}
},
{
test: /\.html$/,
loader: 'file-loader?name=[name].[ext]'
},
{
test: /\.css$/,
loader: 'file-loader?name=css/[name].[ext]'
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader?name=images/[name].[ext]'
},
{
test: /\.(ttf)$/,
loader: 'file-loader?name=fonts/[name].[ext]'
}
]
}
}
Dans webpack-hook.js j'ai une seule ligne: require('./gui/html/index.html');
Ce que je veux/expect est d'avoir toutes les dépendances trouvés par webpack et empaqueté dans dist/images, dist/fonts, et ainsi de suite. En ce moment, je viens d'obtenir un fichier index.html copié dans dist.
J'ai essayé d'utiliser html-loader - il convertit le html en une chaîne et l'intègre dans un module. Je peux utiliser à la fois un chargeur avec 'html-loader' suivi immédiatement par un utilisant le 'load-file' pour écraser le module javascript qu'il crée. Cependant, il ne parvient toujours pas à trouver client.js ou toute autre dépendance. –
Les docs ne sont pas super claires, et je n'ai pas utilisé 'html-loader', mais il a quelque chose de prometteur dans [Options avancées] (https://github.com/webpack/html-loader#advanced-options): '" attrs: ['img: src', 'link: href'] "' est donné comme une option loader; peut-être que vous pouvez ajouter 'script: src' à ce tableau. – Jacob
Pas de dés. Cependant, si je mets un 'require ('./ gui/react/client.js');' la partie javascript de l'application sera regroupée correctement. La plupart de mes styles sont définis en Javascript, mais j'ai toujours besoin d'une feuille de style pour importer les ressources de polices. –