luqin / react-component-tools

Common tools I use across my React Component projects. Webpack, Gulp, Babel, Live reload, React hot reload, CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, SASS, PostCSS, ... 通用React组件开发工具
Other
51 stars 9 forks source link

React Component Tools

NPM version Build Status CircleCI Status

Dependency Status devDependency Status peerDependency Status

Common Gulp tasks I use across my React Component projects. Base on react-component-gulp-tasks

This package provides common gulp tasks for building react components with:

You control the settings for the tasks by providing a config object, as described below.

Project setup

The tasks assume you are following the following conventions for your project:

Example project structure

bower.json
package.json
gulpfile.js
src
  MyComponent.js
sass // or less
  my-component.scss
lib
  // contains transpiled source
  MyComponent.js
dist
  // contains packaged component
  my-component.js
  my-component.min.js
  my-component.css
  my-component.min.css
example
  dist
    // contains built examples
  src
    app.js
    app.scss
    index.html

For a complete example see react-component-starter

Usage

npm install --save-dev gulp react-component-tools

In your gulpfile, call this package with your gulp instance and config. It will add the tasks to gulp for you. You can also add your own tasks if you want.

var gulp = require('gulp');
var initGulpTasks = require('react-component-tools');
var taskConfig = require('./config');

initGulpTasks(gulp, taskConfig);

Task Config

You can customise the tasks to match your project structure by changing the config.

Required config keys are:

Component

Example

Alias

Example

var gulp = require('gulp');
var initGulpTasks = require('react-component-tools');

var taskConfig = {

  component: {
    name: 'MyComponent',
    dependencies: {
      classnames: 'classnames',
      react: {
        root: 'React',
        commonjs2: 'react',
        commonjs: 'react',
        amd: 'react'
      }
    },
    sass: './scss/my-component.scss' // or `less: 'less/my-component.less'`
  },

  example: {
    dist: './examples/dist',
    entry: './examples/src/app.js',
    html: './examples/src/index.html',
    files: [
      './README.md'
    ]
  }

};

initGulpTasks(gulp, taskConfig);

Gulp Tasks

Contributing

I wrote this package because maintaining my build process across multiple packages became a repetitive chore with large margin for error.

Although its quite opinionated, hopefully it will be a useful resource for other package authors. It's got all the nice things I found to component development easy and fun, like a lightning-quick rebuild process with gulp-reload, consolidated publishing, and automated deployment to github pages.

Please let me know if you think anything could be done better or you'd like to see a feature added. Issues and PR's welcome.