1.3.0 • Published 2 years ago

my-react-library-super_nick v1.3.0

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

create react library with webpack.js

This branch has been implemented with webpack way, download it and cd in run yarn install && yarn build, then the output library should be in lib/boundle.js.

Remember to delete node_modules/react manually if you use local link test.

Start from scratch

1.Make folder

mkdir my-react-library

cd my-react-library

mkdir src

2.Install

yarn init -y

yarn add react @emotion/core

yarn add webpack webpack-cli babel-lodaer @babel/core @babel/preset-env @babel/preset-react @emotion/babel-preset-css-prop -D

@emotion/babel-preset-css-prop is a babel preset we gonna use it later.

3.webpack.config.js & .babelrc

create webpack.config.js

const path = require('path')
const nodeExternals = require('webpack-node-externals') // exclude 3rd libraries from bundle with

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'lib'),
    filename: 'bundle.js',
    libraryTarget: 'commonjs2',
    // libraryTarget: 'umd',
    // globalObject: 'this'
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
      }
    ]
  },
  externals: [nodeExternals()],
}

.babelrc

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react",
    "@emotion/babel-preset-css-prop",
    "minify"
  ]
}

4. package.json

edit package.json

  "main": "./lib/bundle.js",
...
  "scripts": {
    "build": "yarn run webpack",
    "start": "yarn run webpack -w"
  },

5.Create index.js

src/index.js

// Here is the entries of our components

export { default as Button } from './Button'

6.Create Component

src/Button.js

import React, { useEffect, useState } from 'react'
import { css } from '@emotion/core'

function Button() {
  const [state, setState] = useState(false)

  useEffect(() => {
    setTimeout(() => {
      setState(!state)
    }, 1000)
  })

  const btnStyle = css`
    padding: 10px 20px;
    font-size: 4rem;
    border: none;
    border-radius: 8px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  `

  return (
    <button
      css={css`
        ${btnStyle};
        color: ${state ? 'royalblue' : 'hotpink'};
      `}
    >
      Button
    </button>
  )
}

export default Button

7. Build or Watch Build

Build: yarn build

Watch build: yarn start

🌈 That's it! 🎉

Use library in you react project locally

1. cd my-react-library

2. run yarn link to registered the link

3. cd react-project go to project folder

4. run yarn link my-react-library

5. Test it

yarn start

Then you will get an error like:

Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:

The easiest way to sole this is go to my-react-library/node_modules and delete react manually

🌈 That's it! 🎉

Publish to npm, finally!!

1.cd my-react-library

2.run yarn publish

Set the version, pass the account then it will be published! 🎉

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago