帰宅後科学者

オタクですが何か?

使用 create-react-library 快速開發獨立 component library

想要開發獨立的 React component library 卻不知從何下手?在工作專案中開發了一堆 component 卻怎樣拆也拆不開?聽說有 create-react-library 這個神奇工具可以快速地解決這些麻煩,立馬來試試。

安裝

yarn global add create-react-library

使用 create-react-library

安裝好之後就可以馬上用它的 CLI 試試,先設定個目標—一個沒用的按鈕(UselessButton)好了。

$ create-react-library 
? Package Name useless-button
? Package Description Test for create-react-library
? Author's GitHub Handle ccmikechen
? GitHub Repo Path ccmikechen/useless-button
? License MIT
? Package Manager yarn
? Template default
✔ Copying default template to /home/mike/workspace/useless-button/useless-button
✔ Running yarn install and yarn link
✔ Initializing git repo


Your module has been created at /home/mike/workspace/useless-button/useless-button.

To get started, in one tab, run:
$ cd useless-button && yarn start

And in another tab, run the create-react-app dev server:
$ cd useless-button/example && yarn start

這樣就通通幫你建完了。繼續照著指示做。

開發用 Server

create-react-library 很貼心的提供開發用 Server 讓你一邊開發一邊看結果。

cd example && yarn start

之後在瀏覽器開啟 http://localhost/ 就可以看到 component 的樣子了。

開發 Component

現在一切準備妥當,開始來開發我們的沒用的按鈕。

// src/index.js

import React, { Component } from 'react'
import PropTypes from 'prop-types'

import styles from './styles.css'

export default class UselessButton extends Component {
  static propTypes = {
    text: PropTypes.string
  }

  render() {
    const {
      text
    } = this.props

    return (
      <button className={styles.button}
              onClick={() => alert("You are useless!")}>
        { text }
      </button>
    )
  }
}
/* src/styles.css */
.button {
  display: inline-block;
  margin: 2em auto;
  border: 2px solid #000;
  font-size: 2em;
}
// example/src/App.js

import React, { Component } from 'react'

import UselessButton from 'useless-button'

export default class App extends Component {
  render () {
    return (
      <div>
        <UselessButton text='Useless' />
      </div>
    )
  }
}

接下來看到畫面上出現了我們的沒用的按鈕,按下去會跳出 alert ,功能正常,接下來就可以發布囉!

發布

要發布自己的 library 到 npm 之前必須先擁有 npm 的帳號,沒有的先去 npm 官網申請一個吧! 接下來簡單透過指令發布:

yarn publish

這樣就完成了,可以到 npm 的頁面找找看。

https://www.npmjs.com/package/useless-button

測試

既然已經發布到 npm 上了,那就來試試看吧! 我們可以使用 create-react-app 建立一個新專案試試。

yarn global add create-react-app
create-react-app useless-button-test
cd useless-button-test
yarn start

這樣測試用的 server 也開好了,將我們的 library 加進專案中。

yarn add useless-button
// useless-button-test/src/App.js

import React, { Component } from 'react';

import UselessButton from 'useless-button';

import logo from './logo.svg';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        <UselessButton text="Useless" />
      </div>
    );
  }
}

export default App;

接下來畫面上就能看到我們剛剛開發的 UselessButton 囉!