Инициировать проект
create-react-app create-react-app-npm cd create-react-app-npm yarn run eject yarn add -D babel-preset-es2015 babel-preset-stage-0 babel-preset-react babel-cli
Создайте `.babelrc`
{
“presets”: [“es2015”, “react”, “stage-0”]
}
Измените package.json
…
"name": "create-react-app-npm",
"version": "0.0.1",
"main": "lib/index.js",
"dependencies": {
…
"scripts": {
"start": "node scripts/start.js",
"build": "node scripts/build.js",
"lib": "babel src/node_modules --out-dir lib --copy-files",
"test": "node scripts/test.js --env=jsdom"
},
…
Для обычного загрузчика css
Измените config / webpack.config.dev.js
…
{
test: /\.css$/,
loader: `style!css?importLoaders=1&modules&localIdentName=[name]__[local]___[hash:base64:5]!postcss`
},
…
Измените config / webpack.config.prod.js
…
{
test: /\.css$/,
loader: ExtractTextPlugin.extract(
‘style’,
‘css?importLoaders=1&modules&localIdentName=[name]__[local]___[hash:base64:5]!postcss’,
extractTextPluginOptions
)
},
…
Создать следующую структуру папок
src/node_modules/ src/node_modules/components/ src/node_modules/components/YourComponent/ src/node_modules/components/YourComponent1/ src/node_modules/components/YourComponent2/ … src/node_modules/components/YourComponentN/
В каждом `YourComponentN`
Создайте package.json
{
“private”: true,
“name”: “YourComponent”,
“main”: “./YourComponent.js”
}
Создайте `YourComponent.css` (например)
.root {
background: linear-gradient(to top,#fed835 20px,#ffeb3c 20px);
font-size: 30px;
color: white;
line-height: 35px;
text-align: center;
}
Создайте `YourComponent.js`
import React from 'react'
import s from './YourComponent.css'
class YourComponent extends React.Component {
render() {
return (
<div className={ s.root }>
{ this.props.children }
</div>
)
}
}
export default YourComponent
Создать src/node_modules/index.js
export { default as YourComponent } from './components/YourComponent'
Для демонстрационного приложения измените `src / App.js`
import React from 'react'
import YourComponent from 'components/YourComponent'
class App extends React.Component {
render() {
return (
<YourComponent>
1
</YourComponent>
)
}
}
export default App
Теперь вы можете запустить `yarn run start`, чтобы увидеть, что вы сделали
Добавьте необходимые пути к `.gitignore (например)
/node_modules /coverage /build .DS_Store .env npm-debug.log* yarn-debug.log* yarn-error.log* yarn.lock .idea
Скомпилировать библиотеку
yarn run lib
Создать репозиторий на github
Свяжите свой проект с github
git init git remote add origin https://github.com/lokhmakov/create-react-app-npm.git
Добавить и зафиксировать
git add . git commit -m "init" git push -u origin master npm publish
Вы сделали. Теперь вы можете использовать его
yarn add create-react-app-npm
И
import { YourComponent } from 'create-react-app-npm'