Create-React-App: What's the best way to include CSS from node_module directory

Create React-App

Create React-App Problem Overview


I'm trying to include some CSS in my create-react-app project. The CSS is from a 3rd party NPM package and therefore its in the node_modules directory.

I tried: import '/node_modules/packagename/css/styles.css';

But I get the error:

> Module not found: You attempted to import /node_modules/packagename/css/styles.css which falls outside of the project src/ directory. Relative imports outside of src/ are not supported. You can either move it inside src/, or add a symlink to it from project's node_modules/.

I would prefer to not move the CSS to src/ so it can be updated via NPM. I could symlink but as I develop on windows and deploy to linux this isn't ideal.

What's the best way from me to include the CSS?

Create React-App Solutions


Solution 1 - Create React-App

Find the path of the css file

example: ./node_modules/packagename/dist/css/styles.css

Import using the path related to node_modules (anything after node_modules/ )

import 'packagename/dist/css/styles.css'

Solution 2 - Create React-App

relative paths are unnecessary from node_modules and should not be the recommended way to include the css

all you have to do is leave off the preceding slash and node_modules directory same as importing a js package from node modules:

import 'package/css/style-to-import.css'

when using (s)css imports, use the tilde (~) to indicate an absolute import:

@import '~package/css/style-to-import.css'

Solution 3 - Create React-App

A distinction not made from the previous answers is it depends on where you're importing the CSS into; a component or into a stylesheet.

If you're importing a node_modules stylesheet into a component, you don't need a relative path like mentioned above.

import 'packagename/dist/css/styles.css'

However, if you're importing a node_modules stylesheet into a CSS/SCSS file, you need to use tilde ~.

@import '~packagename/dist/css/styles.css'

Solution 4 - Create React-App

I found this a bug of a pain. specially my webpack.config.js is not running anymore.

specially react app is now running in src folder and the import files need to be in the public folder.

i was using materialize-social and found out the easiest way is to move node_module file folder "materialize-social" to the public directory any other way please commend it down.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSean BannisterView Question on Stackoverflow
Solution 1 - Create React-AppAfzal HossainView Answer on Stackoverflow
Solution 2 - Create React-AppSampson CrowleyView Answer on Stackoverflow
Solution 3 - Create React-ApppngView Answer on Stackoverflow
Solution 4 - Create React-Appzero8View Answer on Stackoverflow