¿Alguna idea de por qué este webpack.config.js no está configurando la variable LESS global: current-vehicle definido en: /resources/scripts/theme.js ?
/webpack.config.js
const merge = require("webpack-merge"); const path = require("path"); const baseConfig = require("laravel-mix/setup/webpack.config"); require('dotenv').config(); /** * Update the output directory and chunk filenames to work as expected. * * @param {object} config - The webpack config * * @return {object} The updated webpack config */ const addOutputConfiguration = config => { const publicPath = process.env.CDN_URL + '/js/'; return merge(config, { output: { path: path.resolve(__dirname, "public/cdn/js"), publicPath, chunkFilename: "[name].js" }, module: { loaders: [ { loader: 'less-loader', options: { modifyVars: require("./resources/scripts/theme") } }, ], }, }); }; module.exports = addOutputConfiguration(baseConfig);Aquí tenéis el repositorio completo: https://github.com/tlg-265/issue-import-less.local
$ git clone https://github.com/tlg-265/issue-import-less.local $ cd issue-import-less.local $ npm i $ npm run watch Then open with the browser (you do NOT need a server). Esa variable LESS : current-vehicle se lee aquí:
Cuando haces: $ npm run watch , obtienes el error: Variable @current-vehicle is undefined , como puedes ver en la siguiente captura de pantalla:
Idealmente, cuando lo ejecute, debería obtener lo siguiente en el navegador:
y al hacer clic en el enlace, debe obtener:
pero desafortunadamente no he podido llegar allí todavía.
¿Alguna idea sobre cómo hacer que funcione?
¡Gracias por adelantado!
Esta parte de su configuración me sorprendió:
module: { loaders: [ // <==== !!!!!! here { loader: 'less-loader', options: { modifyVars: require("./resources/scripts/theme") } }, ], }, Recuerdo que la clave de los loaders era para Webpack versión 1 o 2, después de la versión 3 recomendaron rules de uso, cámbiela a rules y pruébela. No sé, tal vez proviene de la configuración del paquete web de Laravel.
De todos modos, después less-loader , agregue este cargador también:
{ loader: 'text-transform-loader', options: { prependText: '@import "./resources/scripts/theme.less"', }, },