I don't know how to load with webpack any CSS from node_modules libs, for example I've installed leaflet and each attempt of load leaflet/dist/leaflet.css
fails.
Could you provide example how to load static styles from node_modules?
My current webpack config below. Additionaly I'm using extract-text-webpack-plugin
and sass-loader
my project scss files are working well, I have also css-loader
, have I to resolve static css files or add something to stylePathResolves
?
//require('leaflet/dist/leaflet.css');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var webpack = require("webpack");
var path = require('path');
var stylePathResolves = (
'includePaths[]=' + path.resolve('./') + '&' +
'includePaths[]=' + path.resolve('./node_modules')
)
module.exports = {
entry: ".js/app.js",
output: {
path: "./static/js",
filename: "app.js"
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel'
}, {
test: /\.scss$/,
loader: ExtractTextPlugin.extract(
'style',
'css' + '!sass?outputStyle=expanded&' + stylePathResolves
)
}
]
},
plugins: [new ExtractTextPlugin("app.css")]
};
Where to load leaflet.css, commented out require('leaflet/dist/leaflet.css')
gives me following error:
home/myproj/node_modules/leaflet/dist/leaflet.css:3
.leaflet-map-pane,
^
SyntaxError: Unexpected token .
For users who have encountered a similar problem, there are steps that I've done to get it working, I'm not sure that this equilibrium way.
npm install file-loader --save
import 'leaflet/dist/leaflet.css';
in main app.jsadd
css-loader
to get rid ofSyntaxError: Unexpected token .
and next addfile-loader
and match files to get rid ofUncaught Error: Cannot find module "./images/layers.png"
:At the beginning I got this config from some example and it's not 100% clear why I've used
ExtractTextPlugin
to load scss and what the correlation is with css-loader, maybe to be more coherent should I use ExtractTextPlugin also in this part, maybe someone knows and can code review? But my solution is working and I can work further.I had to do:
If I didn't configure the file loader for the images, I got:
You also MUST import the CSS file in your
index.js
ormain.js
(or whatever your main JS file is called). Otherwise, you get an error saying thatmodule.exports is read-only
.A more updated
webpack.config.js
snippet is: