Tuesday, May 21, 2024
 Popular · Latest · Hot · Upcoming
73
rated 0 times [  80] [ 7]  / answers: 1 / hits: 21259  / 9 Years ago, wed, december 16, 2015, 12:00:00

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 .

More From » css

 Answers
12

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.




  1. npm install file-loader --save

  2. add import 'leaflet/dist/leaflet.css'; in main app.js

  3. change webpack.config.js by following way:



add css-loader to get rid of SyntaxError: Unexpected token . and next add file-loader and match files to get rid of Uncaught Error: Cannot find module ./images/layers.png:



module.exports = {
entry: ./web/static/js/app.js,
output: {
path: ./priv/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
)
}, {
test: /.css$/,
loader: style-loader!css-loader
}, {
test: /.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
loader: 'file-loader'
}]
},
plugins: [new ExtractTextPlugin(app.css)]
};


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.


[#64050] Sunday, December 13, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kaleyv

Total Points: 259
Total Questions: 99
Total Answers: 107

Location: Saint Helena
Member since Tue, Nov 3, 2020
4 Years ago
;