diff --git a/.gitignore b/.gitignore index df1abe93..d9ec90cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ _* !__tests__ +/dist /lib /node_modules diff --git a/assets/dist/.gitignore b/assets/dist/.gitignore deleted file mode 100644 index a5baada1..00000000 --- a/assets/dist/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.gitignore - diff --git a/demo.html b/demo.html index cc6d7624..833c712e 100644 --- a/demo.html +++ b/demo.html @@ -4,7 +4,7 @@ React Rich Text Editor Example - + diff --git a/package.json b/package.json index 46a7e61b..6af95f4d 100644 --- a/package.json +++ b/package.json @@ -2,13 +2,14 @@ "name": "react-rte", "version": "0.1.10", "description": "React Rich Text Editor", - "main": "lib/RichTextEditor.js", + "main": "dist/react-rte.js", "scripts": { - "build-demo": "webpack", + "build": "npm run build-lib && npm run build-dist", + "build-dist": "rimraf dist && webpack", "build-lib": "rimraf lib && babel src --ignore '_*' --out-dir lib", "lint": "eslint --max-warnings 0 .", "typecheck": "flow", - "prepublish": "npm run build-lib", + "prepublish": "npm run build", "test": "npm run lint && npm run typecheck && npm run test-src", "test-src": "mocha" }, @@ -37,6 +38,7 @@ "babel-preset-stage-2": "^6.5.0", "class-autobind": "^0.1.0", "css-loader": "^0.23.1", + "css-modules-require-hook": "^4.0.0", "eslint": "2.2.0", "eslint-plugin-babel": "^3.1.0", "eslint-plugin-flow-vars": "^0.2.1", diff --git a/src/EditorDemo.js b/src/EditorDemo.js index f8150177..4b140967 100644 --- a/src/EditorDemo.js +++ b/src/EditorDemo.js @@ -1,10 +1,11 @@ /* @flow */ import React, {Component} from 'react'; import RichTextEditor from './RichTextEditor'; -import type {EditorValue} from './RichTextEditor'; import {convertToRaw} from 'draft-js'; import autobind from 'class-autobind'; +import type {EditorValue} from './RichTextEditor'; + type Props = {}; type State = { value: EditorValue; diff --git a/src/__tests__/RichTextEditor-test.js b/src/__tests__/RichTextEditor-test.js index 2c265a5c..5f86981f 100644 --- a/src/__tests__/RichTextEditor-test.js +++ b/src/__tests__/RichTextEditor-test.js @@ -12,6 +12,7 @@ describe('RichTextEditor', () => { renderer.render(); let output = renderer.getRenderOutput(); expect(output.type).toEqual('div'); - expect(output.props.className).toEqual('rte-root'); + expect(output.props.className).toBeA('string'); + expect(output.props.className).toInclude('RichTextEditor__root'); }); }); diff --git a/test/init.js b/test/init.js new file mode 100644 index 00000000..11248ba3 --- /dev/null +++ b/test/init.js @@ -0,0 +1,3 @@ +require('css-modules-require-hook')({ + generateScopedName: '[name]__[local]___[hash:base64:5]', +}); diff --git a/test/mocha.opts b/test/mocha.opts index 67c51291..a7a82c62 100644 --- a/test/mocha.opts +++ b/test/mocha.opts @@ -1,2 +1,3 @@ --compilers js:babel-core/register +--require ./test/init.js src/__tests__/*.js src/**/__tests__/*.js diff --git a/webpack.config.js b/webpack.config.js index 79e7ee90..7f8375fd 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,27 +1,36 @@ /*eslint-env node */ var path = require('path'); -module.exports = { - entry: { - demo: './src/demo.js', +var loaders = [ + {test: /\.js$/, loader: 'babel'}, + { + test: /\.css$/, + exclude: /\.global\.css$/, + loaders: [ + 'style?sourceMap', + 'css?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]', + ], }, + {test: /\.global\.css$/, loader: 'style!raw'}, +]; + +module.exports = [{ + entry: './src/RichTextEditor.js', output: { - path: path.join(__dirname, 'assets/dist'), - publicPath: '/assets/dist/', - filename: '[name].js', + path: path.join(__dirname, 'dist'), + filename: 'react-rte.js', + libraryTarget: 'commonjs2', }, - module: { - loaders: [ - {test: /\.js$/, loader: 'babel'}, - { - test: /\.css$/, - exclude: /\.global\.css$/, - loaders: [ - 'style?sourceMap', - 'css?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]', - ], - }, - {test: /\.global\.css$/, loader: 'style!raw'}, - ], + externals: { + react: 'react', + 'react-dom': 'react-dom', + }, + module: {loaders: loaders}, +}, { + entry: './src/demo.js', + output: { + path: path.join(__dirname, 'dist'), + filename: 'demo.js', }, -}; + module: {loaders: loaders}, +}];