Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to export and import style in npm package?

I have a React component and I publish the component in NPM registry that I build with webpack. In my main project I consumed the component npm package JS like that:

import myComp from 'myComp'; 

The problem is that myComp also has CSS, that I build into dist/index.css with the help of webpack and ExtractTextPlugin (which builds all the css into one file).

And I want to consume the style like this:

import 'myComp/index.css'; 

Or

import 'myComp/index'; 

And in myComp npm package I want to expose it in a way that will support this import method.

NOTE: I don't want to import it directly from node_modules

import '../../../node_modules/myComp/index.css'; // bad 

Thanks!

like image 528
David Avatar asked Nov 01 '16 20:11

David


People also ask

What is npm CSS loader?

CSS Loader being a front-end component is defined as an npm Module that collects all the CSS files referenced in the working application to help webpack and consolidate into a string. This compiles an application of a particular resource as a JavaScript module (CSS to JS file).

How use NPM package meteor?

To use an npm package from a file in your application you import the name of the package: import moment from 'moment'; // this is equivalent to the standard node require: const moment = require('moment'); This imports the default export from the package into the symbol moment .


1 Answers

So it's easier than I thought, all you need to do is import the CSS like that (as I did in the question):

import 'myComp/dist/style.css'; 

And make sure your tools (browserify/webpack etc..) can handle loading css into your javascript file.

So the issue was more related to the building process.


Also, if you want to push specific code into npm registry you can use "files" inside package.json. This way you'll end up with just the files you need in npm registry.

files: [ "dist/*.css" ] 

You can also use tools like: https://github.com/rotundasoftware/parcelify - for browserify https://www.npmjs.com/package/parcelify-loader - for webpack

But I didn't like them. It forces a dependency on the consumer of your npm package.

like image 157
David Avatar answered Sep 18 '22 16:09

David