¿Qué se supone que debo hacer exactamente con “module.exports = ‘html_template_content'” en el paquete web?

Así que quiero hacer una tarea muy simple usando webpack.

Tengo algunas plantillas HTML estáticas como por ejemplo

test.html

template content

y todo lo que quiero hacer es devolver la cadena dentro de la plantilla, por ejemplo,

 require("raw!./test.html") 

con debe devolver una cadena como:

 "
template content
"

pero en cambio, devuelve la siguiente cadena

 "modules.exports = 
template content
"

He probado varios módulos, como el raw-loader y html-loader. y ambos se comportan de la misma manera. Así que eché un vistazo al código fuente, solo para descubrir que DEBE comportarse de esta manera.

código fuente del módulo en bruto

Entonces, ¿qué es exactamente lo que se espera que haga con esto, si solo quiero el HTML en bruto? ¿es una mala práctica simplemente eliminar la cadena “module.exports =”? desde la edición del paquete: al eliminar la parte ‘modules.export =’, el paquete no devuelve nada: /

mi config

 module.exports = { module: { loaders: [ { test: /\.html$/, loader: "raw-loader" } ] } }; 

La solución es requerir su archivo sin especificar ningún cargador adicional, ya que esto ya está especificado en la configuración del paquete web.

 const test = require('./test.html') 

Explicación: con su código actual, está aplicando el cargador en raw dos veces a su archivo. Cuando especifique una cadena de cargadores en su configuración:

 loaders: [ { test: /\.html$/, loader: "raw-loader" } ] 

… ya le está diciendo a webpack que agregue este cargador a la cadena de cargadores cada vez que necesite un archivo que coincida con la condición de test (aquí, cada archivo html)

Por lo tanto, cuando escribes esto

 const test = require('raw!./test.html') 

… en realidad es equivalente a esto

 const test = require('raw!raw!./test.html') 

Finalmente lo descubrí, creo. require.resolve(./test.html) resolver el nombre de la ruta utilizando require.resolve(./test.html) https://nodejs.org/dist/latest-v7.x/docs/api/globals.html#globals_require

Cuando escribe require('./test.html') significa que simplemente ejecuta el código devuelto por la cadena de cargadores. El resultado se exporta en este código como module.exports . Para utilizar este resultado, debe asignar su statement de requerimiento a la variable:

 var htmlString = require('raw!./test.html'); //htmlString === "
template content
"

Recuerde que cualquier cargador en Webpack devuelve código JS, no HTML, no CSS. Puedes usar este código para obtener HTML, CSS y lo que sea.