react_webpack_rails 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +39 -0
- data/README.md +2 -14
- data/docs/README.md +8 -1
- data/docs/install_generator.md +6 -5
- data/js/src/version.js +1 -1
- data/lib/generators/react_webpack_rails/install/hot_reload_generator.rb +10 -0
- data/lib/generators/react_webpack_rails/install/redux_generator.rb +56 -0
- data/lib/generators/react_webpack_rails/install_generator.rb +18 -0
- data/lib/generators/react_webpack_rails/templates/packages/core.json +5 -2
- data/lib/generators/react_webpack_rails/templates/packages/redux.json +7 -0
- data/lib/generators/react_webpack_rails/templates/react/components/hello-world-test.jsx +2 -2
- data/lib/generators/react_webpack_rails/templates/webpack/hot-dev.config.js +3 -0
- data/lib/generators/react_webpack_rails/templates/webpack.config.js +2 -7
- data/lib/react_webpack_rails/services/camelize_keys.rb +18 -5
- data/lib/react_webpack_rails/version.rb +1 -1
- data/package.json +6 -4
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc3c752488603fdb973882bb3e20ba9f7f41ede7
|
4
|
+
data.tar.gz: fa127620618ef5c6b0ee93ca066684d28ecbc02a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f85dc801dd5df4ea8f60b5f759806e0d935dce4bb9dfbee7133a7d6231d075b3bc98ccd99314598c2a8fe936e966604c56496b8b5446437cadb1cb4ed6890305
|
7
|
+
data.tar.gz: cb4e64ca3e72c7033ae05bc527d09ca063e3614953c5610cdbaabb70ec782bb59df1783fe96f148dcdaae798f121a79a0ecf6d1d261b0187d8c8dafbe95861eb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,42 @@
|
|
1
|
+
## 0.4.0
|
2
|
+
* Use React 15.x
|
3
|
+
* Added Redux Generator
|
4
|
+
* Add css/scss hot reload (css modules support)
|
5
|
+
* Fix CamelizeKeys service - accept arrays
|
6
|
+
|
7
|
+
#### migration 0.3.1 -> 0.4.0
|
8
|
+
1. Install `style-loader` & `css-loader`:
|
9
|
+
```
|
10
|
+
$ npm install --save style-loader css-loader
|
11
|
+
```
|
12
|
+
2. update webpack configuration:
|
13
|
+
1. In your `webpack.config.js` in `loaders` section replace:
|
14
|
+
```js
|
15
|
+
{
|
16
|
+
key: 'scss',
|
17
|
+
test: /\.scss$/,
|
18
|
+
loader: ExtractTextPlugin.extract('css!sass')
|
19
|
+
},
|
20
|
+
{
|
21
|
+
key: 'css',
|
22
|
+
test: /\.css$/,
|
23
|
+
loader: ExtractTextPlugin.extract('css!sass')
|
24
|
+
}
|
25
|
+
```
|
26
|
+
with:
|
27
|
+
```js
|
28
|
+
{
|
29
|
+
key: 'style',
|
30
|
+
test: /\.s?css$/,
|
31
|
+
loader: ExtractTextPlugin.extract('css!sass')
|
32
|
+
}
|
33
|
+
```
|
34
|
+
2. in your `webpack/hot-dev-config.js` add:
|
35
|
+
```js
|
36
|
+
var scssLoader = config.module.loaders.filter(function(loader) { return loader.key == 'style' })[0]
|
37
|
+
scssLoader.loader = 'style!css!sass!';
|
38
|
+
```
|
39
|
+
|
1
40
|
## 0.3.1
|
2
41
|
* show depreciation warning only when integrations/react-router is used
|
3
42
|
* throw an error when integration is missing
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ See [0.3-stable](https://github.com/netguru/react_webpack_rails/tree/0.3-stable)
|
|
10
10
|
## Features
|
11
11
|
* [Install Generator](https://github.com/netguru/react_webpack_rails/blob/master/docs/install_generator.md) for quick [Webpack](http://webpack.github.io/) setup.
|
12
12
|
* Integrated [react-hot-loader](https://github.com/gaearon/react-hot-loader)
|
13
|
-
* ES6/7 support with [
|
13
|
+
* ES6/7 support with [babeljs](https://babeljs.io/).
|
14
14
|
* Node.js based [server-side JavaScript execution](https://github.com/netguru/react_webpack_rails/blob/master/docs/server_side_rendering.md).
|
15
15
|
* [React](https://facebook.github.io/react/) integration with server prerender option.
|
16
16
|
* [React-router](https://github.com/rackt/react-router) integration.
|
@@ -36,19 +36,7 @@ Then run installation:
|
|
36
36
|
|
37
37
|
$ rails g react_webpack_rails:install
|
38
38
|
|
39
|
-
*read more about [install generator](https://github.com/netguru/react_webpack_rails/blob/master/docs/install_generator.md)
|
40
|
-
|
41
|
-
|
42
|
-
Establish the node packages (may take a few moments)
|
43
|
-
|
44
|
-
$ npm install # you may see warnings to consider updating the provided package.json file with license and repository
|
45
|
-
|
46
|
-
And require integration and bundle files in `application.js`
|
47
|
-
|
48
|
-
```js
|
49
|
-
//= require react_integration
|
50
|
-
//= require react_bundle
|
51
|
-
```
|
39
|
+
*read more about [`install generator`](https://github.com/netguru/react_webpack_rails/blob/master/docs/install_generator.md)*
|
52
40
|
|
53
41
|
### Babel
|
54
42
|
|
data/docs/README.md
CHANGED
@@ -1,14 +1,21 @@
|
|
1
1
|
# Docs
|
2
|
+
|
2
3
|
1. [Api](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md)
|
4
|
+
|
3
5
|
1.1 [React](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#React)
|
4
6
|
* [js: registerComponent](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#registercomponent)
|
5
7
|
* [js: createComponent](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#getcomponent)
|
6
8
|
* [js: renderComponent](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#rendercomponent)
|
7
9
|
* [js: unmountComponent](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#unmountcomponent)
|
8
10
|
* [ruby: react_component](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#react_component)
|
11
|
+
|
9
12
|
1.2 [ReactRouter](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#ReactRouter)
|
10
13
|
* [js: getRouter](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#getrouter)
|
11
14
|
* [js: renderRouter](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#renderrouter)
|
12
15
|
* [ruby: react_router](https://github.com/netguru/react_webpack_rails/blob/master/docs/api.md#react_router)
|
16
|
+
|
13
17
|
2. [Server-Side Rendering](https://github.com/netguru/react_webpack_rails/blob/master/docs/server_side_rendering.md)
|
14
|
-
|
18
|
+
|
19
|
+
3. [Install Generator](https://github.com/netguru/react_webpack_rails/blob/master/docs/install_generator.md)
|
20
|
+
|
21
|
+
4. [Deployment](https://github.com/netguru/react_webpack_rails/blob/master/docs/deployment.md)
|
data/docs/install_generator.md
CHANGED
@@ -46,10 +46,11 @@ And modify:
|
|
46
46
|
- `app/views/layouts/application.html.erb` by adding hot_reload partial.
|
47
47
|
|
48
48
|
### Options
|
49
|
-
*
|
50
|
-
*
|
51
|
-
*
|
52
|
-
*
|
53
|
-
*
|
49
|
+
* `--no-example` - skip example generator
|
50
|
+
* `--no-hot-reload` - skip hot_reload generator
|
51
|
+
* `--no-server-side` - skip server_side generator
|
52
|
+
* `--no-karma-setup` - skip karma_setup generator
|
53
|
+
* `--react-router` - run react_rotuer generator [DEPRECIATED since v0.3.0 - use [rwr-react_router](https://github.com/netguru/rwr-react_router) instead]
|
54
|
+
* `--redux` - install and setup [`rwr-redux`](https://github.com/netguru/rwr-redux) gem
|
54
55
|
|
55
56
|
*Detailed description of generators coming soon...*
|
data/js/src/version.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export default '0.
|
1
|
+
export default '0.4.0';
|
@@ -25,6 +25,15 @@ module ReactWebpackRails
|
|
25
25
|
copy_file 'partial/_react_hot_assets.html.erb', 'app/views/layouts/_react_hot_assets.html.erb'
|
26
26
|
settings = template_language_settings("render 'layouts/react_hot_assets'")
|
27
27
|
|
28
|
+
missing_layout_info = <<-NO_MANIFEST.strip_heredoc
|
29
|
+
Application Layout not found.
|
30
|
+
|
31
|
+
Application Layout (normally app/views/layouts/appliaction.html.erb) could not be found.
|
32
|
+
Please add in you main layout: "render 'layouts/react_hot_assets'"
|
33
|
+
NO_MANIFEST
|
34
|
+
|
35
|
+
return say_status(:not_found, missing_layout_info, :red) if settings == :no_application_layout
|
36
|
+
|
28
37
|
inject_into_file settings[:layout_file], settings[:parsed_command], after: "#{settings[:body_tag]}\n"
|
29
38
|
end
|
30
39
|
|
@@ -32,6 +41,7 @@ module ReactWebpackRails
|
|
32
41
|
|
33
42
|
def template_language_settings(command)
|
34
43
|
layout_file = Dir.glob('app/views/layouts/application.*').first
|
44
|
+
return :no_application_layout if layout_file.nil?
|
35
45
|
|
36
46
|
case File.extname(layout_file)
|
37
47
|
when '.slim'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module ReactWebpackRails
|
2
|
+
module Install
|
3
|
+
require 'generators/react_webpack_rails/merge_helpers'
|
4
|
+
|
5
|
+
class ReduxGenerator < Rails::Generators::Base
|
6
|
+
include MergeHelpers
|
7
|
+
desc 'Add redux setup'
|
8
|
+
source_root File.expand_path('../../templates', __FILE__)
|
9
|
+
|
10
|
+
REACT_INDEX_FILE = 'app/react/index.js'
|
11
|
+
|
12
|
+
class_option :tmp_package,
|
13
|
+
type: :boolean,
|
14
|
+
default: false,
|
15
|
+
desc: 'Force update tmp/package.json instead package.json'
|
16
|
+
|
17
|
+
def package
|
18
|
+
merge_options = options.tmp_package ? { package_file: 'tmp/package.json', force: true } : {}
|
19
|
+
merge_into_package 'packages/redux.json', merge_options
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_import
|
23
|
+
inject_into_file REACT_INDEX_FILE, after: "import RWR from 'react-webpack-rails';\n" do
|
24
|
+
<<-'JS'.strip_heredoc
|
25
|
+
import RWRRedux from 'rwr-redux';
|
26
|
+
|
27
|
+
JS
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def gsub_rwr_import
|
32
|
+
old_line = "import RWR from 'react-webpack-rails';"
|
33
|
+
new_line = "import RWR, { integrationsManager } from 'react-webpack-rails';"
|
34
|
+
gsub_file REACT_INDEX_FILE, old_line, new_line
|
35
|
+
end
|
36
|
+
|
37
|
+
def add_integration_managers
|
38
|
+
inject_into_file REACT_INDEX_FILE, after: "RWR.run();\n" do
|
39
|
+
<<-'JS'.strip_heredoc
|
40
|
+
|
41
|
+
integrationsManager.register('redux-store', RWRRedux.storeIntegrationWrapper);
|
42
|
+
integrationsManager.register('redux-container', RWRRedux.containerIntegrationWrapper);
|
43
|
+
JS
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_rwr_redux
|
48
|
+
append_file 'Gemfile' do
|
49
|
+
<<-'RB'.strip_heredoc
|
50
|
+
gem 'rwr-redux'
|
51
|
+
RB
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -23,6 +23,10 @@ module ReactWebpackRails
|
|
23
23
|
type: :boolean,
|
24
24
|
default: false,
|
25
25
|
desc: 'Run react_router generator'
|
26
|
+
class_option :redux,
|
27
|
+
type: :boolean,
|
28
|
+
default: false,
|
29
|
+
desc: 'Run redux generator'
|
26
30
|
|
27
31
|
def generate_core
|
28
32
|
generate 'react_webpack_rails:install:core --tmp-package'
|
@@ -56,6 +60,11 @@ module ReactWebpackRails
|
|
56
60
|
generate 'react_webpack_rails:install:react_router --tmp_package'
|
57
61
|
end
|
58
62
|
|
63
|
+
def generate_redux
|
64
|
+
return unless options.redux
|
65
|
+
generate 'react_webpack_rails:install:redux --tmp_package'
|
66
|
+
end
|
67
|
+
|
59
68
|
def copy_package
|
60
69
|
create_file 'package.json', File.read(Rails.root.join('tmp/package.json'))
|
61
70
|
end
|
@@ -64,6 +73,15 @@ module ReactWebpackRails
|
|
64
73
|
remove_file('tmp/package.json')
|
65
74
|
end
|
66
75
|
|
76
|
+
def install_gems
|
77
|
+
return unless options.redux
|
78
|
+
run 'bundle install'
|
79
|
+
end
|
80
|
+
|
81
|
+
def install_packages
|
82
|
+
run 'npm install'
|
83
|
+
end
|
84
|
+
|
67
85
|
private
|
68
86
|
|
69
87
|
def deprecation_warning
|
@@ -12,12 +12,15 @@
|
|
12
12
|
"babel-preset-es2015": "^6.3.13",
|
13
13
|
"babel-preset-react": "^6.3.13",
|
14
14
|
"babel-preset-stage-1": "^6.3.13",
|
15
|
+
"css-loader": "^0.23.1",
|
15
16
|
"extract-text-webpack-plugin": "^0.8.2",
|
16
17
|
"node-sass": "^3.3.3",
|
17
|
-
"react": "^0.
|
18
|
-
"react-
|
18
|
+
"react": "^15.0.1",
|
19
|
+
"react-addons-test-utils": "^15.0.1",
|
20
|
+
"react-dom": "^15.0.1",
|
19
21
|
"react-webpack-rails": "^0.3.0",
|
20
22
|
"sass-loader": "^3.0.0",
|
23
|
+
"style-loader": "^0.13.1",
|
21
24
|
"webpack": "^1.12.1"
|
22
25
|
},
|
23
26
|
"scripts": {
|
@@ -3,6 +3,9 @@ var config = require('./dev.config');
|
|
3
3
|
var jsxLoader = config.module.loaders.filter(function(loader) { return loader.key == 'jsx' })[0]
|
4
4
|
jsxLoader.loaders.unshift('react-hot');
|
5
5
|
|
6
|
+
var scssLoader = config.module.loaders.filter(function(loader) { return loader.key == 'style' })[0]
|
7
|
+
scssLoader.loader = 'style!css!sass!';
|
8
|
+
|
6
9
|
config.output.publicPath = 'http://localhost:8080/assets/'
|
7
10
|
|
8
11
|
config.entry.main.push(
|
@@ -17,13 +17,8 @@ module.exports = {
|
|
17
17
|
loaders: ['babel']
|
18
18
|
},
|
19
19
|
{
|
20
|
-
key: '
|
21
|
-
test: /\.
|
22
|
-
loader: ExtractTextPlugin.extract('css!sass')
|
23
|
-
},
|
24
|
-
{
|
25
|
-
key: 'css',
|
26
|
-
test: /\.css$/,
|
20
|
+
key: 'style',
|
21
|
+
test: /\.s?css$/,
|
27
22
|
loader: ExtractTextPlugin.extract('css!sass')
|
28
23
|
}
|
29
24
|
]
|
@@ -1,11 +1,24 @@
|
|
1
1
|
module ReactWebpackRails
|
2
2
|
module Services
|
3
3
|
class CamelizeKeys
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
def call(data)
|
5
|
+
case data.class.name
|
6
|
+
when 'Array' then data.map { |element| call(element) }
|
7
|
+
when 'Hash' then camelize_hash(data)
|
8
|
+
else data
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.call(data)
|
13
|
+
new.call(data)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def camelize_hash(data)
|
19
|
+
data.inject({}) do |hash, (key, value)|
|
20
|
+
hash[key.to_s.camelize(:lower)] = call(value)
|
21
|
+
hash
|
9
22
|
end
|
10
23
|
end
|
11
24
|
end
|
data/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-webpack-rails",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.4.0",
|
4
4
|
"description": "Js part of react_webpack_rails - webpack based React & Rails integration.",
|
5
5
|
"main": "js/lib/index.js",
|
6
6
|
"files": [
|
@@ -28,11 +28,13 @@
|
|
28
28
|
},
|
29
29
|
"homepage": "https://github.com/netguru/react_webpack_rails#readme",
|
30
30
|
"peerDependencies": {
|
31
|
-
"react": "^0.
|
32
|
-
"react-dom": "^0.
|
31
|
+
"react": "^15.0.0",
|
32
|
+
"react-dom": "^15.0.0"
|
33
33
|
},
|
34
34
|
"dependencies": {
|
35
|
-
"babel-polyfill": "^6.3.0"
|
35
|
+
"babel-polyfill": "^6.3.0",
|
36
|
+
"react": "^15.0.1",
|
37
|
+
"react-dom": "^15.0.1"
|
36
38
|
},
|
37
39
|
"devDependencies": {
|
38
40
|
"babel-cli": "^6.4.0",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react_webpack_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafał Gawlik
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-04-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- lib/generators/react_webpack_rails/install/hot_reload_generator.rb
|
113
113
|
- lib/generators/react_webpack_rails/install/karma_setup_generator.rb
|
114
114
|
- lib/generators/react_webpack_rails/install/react_router_generator.rb
|
115
|
+
- lib/generators/react_webpack_rails/install/redux_generator.rb
|
115
116
|
- lib/generators/react_webpack_rails/install/server_side_generator.rb
|
116
117
|
- lib/generators/react_webpack_rails/install_generator.rb
|
117
118
|
- lib/generators/react_webpack_rails/merge_helpers.rb
|
@@ -127,6 +128,7 @@ files:
|
|
127
128
|
- lib/generators/react_webpack_rails/templates/packages/hot-reload.json
|
128
129
|
- lib/generators/react_webpack_rails/templates/packages/js-specs.json
|
129
130
|
- lib/generators/react_webpack_rails/templates/packages/react-router.json
|
131
|
+
- lib/generators/react_webpack_rails/templates/packages/redux.json
|
130
132
|
- lib/generators/react_webpack_rails/templates/packages/server-side.json
|
131
133
|
- lib/generators/react_webpack_rails/templates/partial/_react_hot_assets.html.erb
|
132
134
|
- lib/generators/react_webpack_rails/templates/react/components/hello-world-test.jsx
|
@@ -172,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
174
|
version: '0'
|
173
175
|
requirements: []
|
174
176
|
rubyforge_project:
|
175
|
-
rubygems_version: 2.4.
|
177
|
+
rubygems_version: 2.4.5.1
|
176
178
|
signing_key:
|
177
179
|
specification_version: 4
|
178
180
|
summary: React and Rails integration done with webpack
|