webpacker-react 0.2.0 → 0.3.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/.gitignore +1 -1
- data/.rubocop.yml +1 -0
- data/CHANGELOG.md +16 -3
- data/Gemfile +2 -3
- data/Gemfile.lock +159 -0
- data/README.md +38 -53
- data/Rakefile +3 -0
- data/circle.yml +3 -10
- data/javascript/webpacker_react-npm-module/dist/package.json +3 -2
- data/javascript/webpacker_react-npm-module/src/configure-hot-module-replacement.js +0 -5
- data/javascript/webpacker_react-npm-module/yarn.lock +2 -8
- data/lib/tasks/disable_webpacker_checks.rake +7 -0
- data/lib/tasks/example_app.rake +15 -0
- data/lib/webpacker/react/component.rb +3 -1
- data/lib/webpacker/react/railtie.rb +2 -1
- data/lib/webpacker/react/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 39f84822cc56ef9521b865a2cb02191c7e885de6
|
|
4
|
+
data.tar.gz: 3bc1aaa3c2e8907bdf68b1e0f988ec4a9be19dc2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 03c1a606967a281f0ed6a2cb2bb382cfb908b35865c7595bd9a740d1c2466ea1f0d17bbbd2d2256b72c924cf9649622b1bd316d3a3f92649e068cd56ff74c6d7
|
|
7
|
+
data.tar.gz: e1cbc00fcb44f24844f19ae562b54bdaf464ddc9b71dfb44e85d74243bf8ae45c4ff0dc71942ffe91c1094d1939555a601f0c4399d3b68288a8478f51c162de3
|
data/.gitignore
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
node_modules/
|
|
2
2
|
/.bundle/
|
|
3
3
|
/.yardoc
|
|
4
|
-
/Gemfile.lock
|
|
5
4
|
/_yardoc/
|
|
6
5
|
/coverage/
|
|
7
6
|
/doc/
|
|
@@ -14,5 +13,6 @@ node_modules/
|
|
|
14
13
|
test/example_app/log/*
|
|
15
14
|
test/example_app/tmp/*
|
|
16
15
|
test/example_app/public/packs
|
|
16
|
+
test/example_app/public/packs-test
|
|
17
17
|
|
|
18
18
|
.rvmrc
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -5,17 +5,30 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
## [0.3.0] - 2017-05-27
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- Webpacker 1.2 and 2.0 support
|
|
13
|
+
- Added a `tag` option to change the tag used to render the component (default is `div`)
|
|
14
|
+
|
|
15
|
+
## [0.2.0] - 2017-03-20
|
|
16
|
+
|
|
9
17
|
### Added
|
|
10
18
|
- support for Turbolinks 5, Turbolinks 2.4 and PJAX. Components will be mounted and unmounted when Turbolinks-specific events occur. Also, the integration works with Turbolinks 5 cache.
|
|
11
19
|
- New `WebpackerReact.setup({Component1, Component2, ...})` initialization API. The old API couldn't properly detect the components' names, thus user is required to provide the names in the configuration object's keys.
|
|
12
20
|
### Removed
|
|
13
21
|
- `WebpackerReact.register(Component)` has been dropped in favor of `WebpackerReact.setup({Component})`
|
|
14
|
-
|
|
22
|
+
|
|
23
|
+
## [0.1.0] - 2017-02-23
|
|
24
|
+
|
|
15
25
|
### Added
|
|
16
26
|
- First released version
|
|
17
27
|
- render React components from views using the `react_component` helper
|
|
18
28
|
- render React components from controllers using `render react_component: 'name'` (#1 by @daninfpj)
|
|
19
29
|
- basic Hot Module Remplacement (#7 by @mfazekas)
|
|
20
30
|
|
|
21
|
-
[Unreleased]: https://github.com/renchap/webpacker-react/compare/v0.
|
|
31
|
+
[Unreleased]: https://github.com/renchap/webpacker-react/compare/v0.3.0...HEAD
|
|
32
|
+
[0.3.0]: https://github.com/renchap/webpacker-react/tree/v0.3.0
|
|
33
|
+
[0.2.0]: https://github.com/renchap/webpacker-react/tree/v0.2.0
|
|
34
|
+
[0.1.0]: https://github.com/renchap/webpacker-react/tree/v0.1.0
|
data/Gemfile
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
source "https://rubygems.org"
|
|
2
2
|
|
|
3
3
|
gem "rubocop", ">= 0.47", require: false
|
|
4
|
-
gem "rails",
|
|
5
|
-
gem "
|
|
6
|
-
gem "webpacker", github: "rails/webpacker"
|
|
4
|
+
gem "rails", "~> 5.1.1"
|
|
5
|
+
gem "webpacker", "~> 2.0.0"
|
|
7
6
|
|
|
8
7
|
# Specify your gem's dependencies in webpacker-react.gemspec
|
|
9
8
|
gemspec
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
webpacker-react (0.3.0)
|
|
5
|
+
webpacker
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: https://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
actioncable (5.1.1)
|
|
11
|
+
actionpack (= 5.1.1)
|
|
12
|
+
nio4r (~> 2.0)
|
|
13
|
+
websocket-driver (~> 0.6.1)
|
|
14
|
+
actionmailer (5.1.1)
|
|
15
|
+
actionpack (= 5.1.1)
|
|
16
|
+
actionview (= 5.1.1)
|
|
17
|
+
activejob (= 5.1.1)
|
|
18
|
+
mail (~> 2.5, >= 2.5.4)
|
|
19
|
+
rails-dom-testing (~> 2.0)
|
|
20
|
+
actionpack (5.1.1)
|
|
21
|
+
actionview (= 5.1.1)
|
|
22
|
+
activesupport (= 5.1.1)
|
|
23
|
+
rack (~> 2.0)
|
|
24
|
+
rack-test (~> 0.6.3)
|
|
25
|
+
rails-dom-testing (~> 2.0)
|
|
26
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
27
|
+
actionview (5.1.1)
|
|
28
|
+
activesupport (= 5.1.1)
|
|
29
|
+
builder (~> 3.1)
|
|
30
|
+
erubi (~> 1.4)
|
|
31
|
+
rails-dom-testing (~> 2.0)
|
|
32
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
33
|
+
activejob (5.1.1)
|
|
34
|
+
activesupport (= 5.1.1)
|
|
35
|
+
globalid (>= 0.3.6)
|
|
36
|
+
activemodel (5.1.1)
|
|
37
|
+
activesupport (= 5.1.1)
|
|
38
|
+
activerecord (5.1.1)
|
|
39
|
+
activemodel (= 5.1.1)
|
|
40
|
+
activesupport (= 5.1.1)
|
|
41
|
+
arel (~> 8.0)
|
|
42
|
+
activesupport (5.1.1)
|
|
43
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
44
|
+
i18n (~> 0.7)
|
|
45
|
+
minitest (~> 5.1)
|
|
46
|
+
tzinfo (~> 1.1)
|
|
47
|
+
addressable (2.5.0)
|
|
48
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
|
49
|
+
arel (8.0.0)
|
|
50
|
+
ast (2.3.0)
|
|
51
|
+
builder (3.2.3)
|
|
52
|
+
capybara (2.12.0)
|
|
53
|
+
addressable
|
|
54
|
+
mime-types (>= 1.16)
|
|
55
|
+
nokogiri (>= 1.3.3)
|
|
56
|
+
rack (>= 1.0.0)
|
|
57
|
+
rack-test (>= 0.5.4)
|
|
58
|
+
xpath (~> 2.0)
|
|
59
|
+
cliver (0.3.2)
|
|
60
|
+
concurrent-ruby (1.0.5)
|
|
61
|
+
erubi (1.6.0)
|
|
62
|
+
globalid (0.4.0)
|
|
63
|
+
activesupport (>= 4.2.0)
|
|
64
|
+
i18n (0.8.1)
|
|
65
|
+
loofah (2.0.3)
|
|
66
|
+
nokogiri (>= 1.5.9)
|
|
67
|
+
mail (2.6.5)
|
|
68
|
+
mime-types (>= 1.16, < 4)
|
|
69
|
+
method_source (0.8.2)
|
|
70
|
+
mime-types (3.1)
|
|
71
|
+
mime-types-data (~> 3.2015)
|
|
72
|
+
mime-types-data (3.2016.0521)
|
|
73
|
+
mini_portile2 (2.1.0)
|
|
74
|
+
minitest (5.10.1)
|
|
75
|
+
multi_json (1.12.1)
|
|
76
|
+
nio4r (2.0.0)
|
|
77
|
+
nokogiri (1.7.0.1)
|
|
78
|
+
mini_portile2 (~> 2.1.0)
|
|
79
|
+
parser (2.4.0.0)
|
|
80
|
+
ast (~> 2.2)
|
|
81
|
+
poltergeist (1.13.0)
|
|
82
|
+
capybara (~> 2.1)
|
|
83
|
+
cliver (~> 0.3.1)
|
|
84
|
+
websocket-driver (>= 0.2.0)
|
|
85
|
+
powerpack (0.1.1)
|
|
86
|
+
public_suffix (2.0.5)
|
|
87
|
+
rack (2.0.1)
|
|
88
|
+
rack-test (0.6.3)
|
|
89
|
+
rack (>= 1.0)
|
|
90
|
+
rails (5.1.1)
|
|
91
|
+
actioncable (= 5.1.1)
|
|
92
|
+
actionmailer (= 5.1.1)
|
|
93
|
+
actionpack (= 5.1.1)
|
|
94
|
+
actionview (= 5.1.1)
|
|
95
|
+
activejob (= 5.1.1)
|
|
96
|
+
activemodel (= 5.1.1)
|
|
97
|
+
activerecord (= 5.1.1)
|
|
98
|
+
activesupport (= 5.1.1)
|
|
99
|
+
bundler (>= 1.3.0, < 2.0)
|
|
100
|
+
railties (= 5.1.1)
|
|
101
|
+
sprockets-rails (>= 2.0.0)
|
|
102
|
+
rails-dom-testing (2.0.3)
|
|
103
|
+
activesupport (>= 4.2.0)
|
|
104
|
+
nokogiri (>= 1.6)
|
|
105
|
+
rails-html-sanitizer (1.0.3)
|
|
106
|
+
loofah (~> 2.0)
|
|
107
|
+
railties (5.1.1)
|
|
108
|
+
actionpack (= 5.1.1)
|
|
109
|
+
activesupport (= 5.1.1)
|
|
110
|
+
method_source
|
|
111
|
+
rake (>= 0.8.7)
|
|
112
|
+
thor (>= 0.18.1, < 2.0)
|
|
113
|
+
rainbow (2.2.1)
|
|
114
|
+
rake (10.5.0)
|
|
115
|
+
rubocop (0.47.1)
|
|
116
|
+
parser (>= 2.3.3.1, < 3.0)
|
|
117
|
+
powerpack (~> 0.1)
|
|
118
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
119
|
+
ruby-progressbar (~> 1.7)
|
|
120
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
121
|
+
ruby-progressbar (1.8.1)
|
|
122
|
+
sprockets (3.7.1)
|
|
123
|
+
concurrent-ruby (~> 1.0)
|
|
124
|
+
rack (> 1, < 3)
|
|
125
|
+
sprockets-rails (3.2.0)
|
|
126
|
+
actionpack (>= 4.0)
|
|
127
|
+
activesupport (>= 4.0)
|
|
128
|
+
sprockets (>= 3.0.0)
|
|
129
|
+
thor (0.19.4)
|
|
130
|
+
thread_safe (0.3.6)
|
|
131
|
+
tzinfo (1.2.3)
|
|
132
|
+
thread_safe (~> 0.1)
|
|
133
|
+
unicode-display_width (1.1.3)
|
|
134
|
+
webpacker (2.0)
|
|
135
|
+
activesupport (>= 4.2)
|
|
136
|
+
multi_json (~> 1.2)
|
|
137
|
+
railties (>= 4.2)
|
|
138
|
+
websocket-driver (0.6.5)
|
|
139
|
+
websocket-extensions (>= 0.1.0)
|
|
140
|
+
websocket-extensions (0.1.2)
|
|
141
|
+
xpath (2.0.0)
|
|
142
|
+
nokogiri (~> 1.3)
|
|
143
|
+
|
|
144
|
+
PLATFORMS
|
|
145
|
+
ruby
|
|
146
|
+
|
|
147
|
+
DEPENDENCIES
|
|
148
|
+
bundler (~> 1.13)
|
|
149
|
+
capybara
|
|
150
|
+
minitest (~> 5.0)
|
|
151
|
+
poltergeist
|
|
152
|
+
rails (~> 5.1.1)
|
|
153
|
+
rake (~> 10.0)
|
|
154
|
+
rubocop (>= 0.47)
|
|
155
|
+
webpacker (~> 2.0.0)
|
|
156
|
+
webpacker-react!
|
|
157
|
+
|
|
158
|
+
BUNDLED WITH
|
|
159
|
+
1.15.0
|
data/README.md
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
# Webpacker
|
|
1
|
+
# Webpacker-React [](https://circleci.com/gh/renchap/webpacker-react)
|
|
2
|
+
|
|
3
|
+
*__Note:__ This is the documentation for the Git master branch. Documentation for the latest release (0.3.0) is [available here](https://github.com/renchap/webpacker-react/tree/v0.3.0).*
|
|
2
4
|
|
|
3
5
|
Webpacker-React makes it easy to use [React](https://facebook.github.io/react/) with [Webpacker](https://github.com/rails/webpacker) in your Rails applications.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
It supports Webpacker 1.2+.
|
|
6
8
|
|
|
7
9
|
An example application is available: https://github.com/renchap/webpacker-react-example/
|
|
8
10
|
|
|
9
|
-
This gem is a work in progress. Final feature list:
|
|
10
|
-
|
|
11
|
-
- [x] uses the new Webpacker way of integrating Javascript with Rails (using packs)
|
|
12
|
-
- [x] render React components from views using a `react_component` helper
|
|
13
|
-
- [x] render React components from controllers using `render react_component: 'name'`
|
|
14
|
-
- [x] support for [hot reloading](https://github.com/gaearon/react-hot-loader)
|
|
15
|
-
- [ ] render components server-side
|
|
16
|
-
- [ ] use a Rails generator to create new components
|
|
17
|
-
|
|
18
11
|
## Installation
|
|
19
12
|
|
|
20
13
|
Your Rails application needs to use Webpacker and have the React integration done. Please refer to their documentation documentation for this: https://github.com/rails/webpacker/blob/master/README.md#ready-for-react
|
|
@@ -22,7 +15,7 @@ Your Rails application needs to use Webpacker and have the React integration don
|
|
|
22
15
|
First, you need to add the webpacker-react gem to your Rails app Gemfile:
|
|
23
16
|
|
|
24
17
|
```ruby
|
|
25
|
-
gem 'webpacker-react', "~> 0.
|
|
18
|
+
gem 'webpacker-react', "~> 0.3.0"
|
|
26
19
|
```
|
|
27
20
|
|
|
28
21
|
Once done, run `bundle` to install the gem.
|
|
@@ -77,12 +70,19 @@ Now you can render React components from your views or your controllers.
|
|
|
77
70
|
|
|
78
71
|
### Rendering from a view
|
|
79
72
|
|
|
80
|
-
Use the `react_component` helper
|
|
73
|
+
Use the `react_component` helper. The first argument is your component's name, the second one is the `props`:
|
|
81
74
|
|
|
82
75
|
```erb
|
|
83
76
|
<%= react_component('Hello', name: 'React') %>
|
|
84
77
|
```
|
|
85
78
|
|
|
79
|
+
You can pass a `tag` argument to render the React component in another tag than the default `div`. All other arguments will be passed to `content_tag`:
|
|
80
|
+
|
|
81
|
+
```erb
|
|
82
|
+
<%= react_component('Hello', { name: 'React' }, tag: :span, class: 'my-custom-component') %>
|
|
83
|
+
# This will render <span class="my-custom-component" data-react-class="Hello" data-react-props="..."></div>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
86
|
### Rendering from a controller
|
|
87
87
|
|
|
88
88
|
```rb
|
|
@@ -93,7 +93,13 @@ class PageController < ApplicationController
|
|
|
93
93
|
end
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
You can
|
|
96
|
+
You can use the `tag_options` argument to change the generated HTML, similar to the `react_component` method above:
|
|
97
|
+
|
|
98
|
+
```rb
|
|
99
|
+
render react_component: 'Hello', props: { name: 'React' }, tag_options: { tag: :span, class: 'my-custom-component' }
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
You can also pass any of the usual arguments to `render` in this call: `layout`, `status`, `content_type`, etc.
|
|
97
103
|
|
|
98
104
|
*Note: you need to have [Webpack process your code](https://github.com/rails/webpacker#binstubs) before it is available to the browser, either by manually running `./bin/webpack` or having the `./bin/webpack-watcher` process running.*
|
|
99
105
|
|
|
@@ -103,10 +109,10 @@ You can pass any of the usual arguments to render in this call: `layout`, `statu
|
|
|
103
109
|
reloading the page. This allows any change you make to your React components to be applied as soon as you save,
|
|
104
110
|
preserving their current state.
|
|
105
111
|
|
|
106
|
-
First, install `react-hot-loader
|
|
112
|
+
First, install `react-hot-loader` (version 3):
|
|
107
113
|
|
|
108
114
|
```
|
|
109
|
-
./bin/yarn add react-hot-loader@
|
|
115
|
+
./bin/yarn add react-hot-loader@beta
|
|
110
116
|
```
|
|
111
117
|
|
|
112
118
|
You then need to update your Webpack config.
|
|
@@ -118,26 +124,15 @@ significantly different than the standard Webpacker config:
|
|
|
118
124
|
//development.js
|
|
119
125
|
...
|
|
120
126
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
var sharedConfig = require('./shared.js')
|
|
124
|
-
sharedConfig.config = configureHotModuleReplacement(sharedConfig.config)
|
|
127
|
+
const sharedConfig = require('./shared.js')
|
|
128
|
+
const configureHotModuleReplacement = require('webpacker-react/configure-hot-module-replacement')
|
|
125
129
|
|
|
126
|
-
module.exports = merge(sharedConfig, ...)
|
|
130
|
+
module.exports = merge(configureHotModuleReplacement(sharedConfig), ...)
|
|
127
131
|
```
|
|
128
132
|
|
|
129
133
|
If you need to change your configuration manually:
|
|
130
134
|
|
|
131
|
-
1.
|
|
132
|
-
```js
|
|
133
|
-
{
|
|
134
|
-
output: {
|
|
135
|
-
publicPath: 'http://localhost:8080'
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
2. add `react-hot-loader/babel` to your `babel-loader` rules:
|
|
135
|
+
1. add `react-hot-loader/babel` to your `babel-loader` rules:
|
|
141
136
|
```javascript
|
|
142
137
|
{
|
|
143
138
|
module: {
|
|
@@ -147,17 +142,13 @@ If you need to change your configuration manually:
|
|
|
147
142
|
exclude: /node_modules/,
|
|
148
143
|
loader: 'babel-loader',
|
|
149
144
|
options: {
|
|
150
|
-
presets: [
|
|
151
|
-
'react',
|
|
152
|
-
[ 'latest', { 'es2015': { 'modules': false } } ]
|
|
153
|
-
],
|
|
154
145
|
plugins: ['react-hot-loader/babel']
|
|
155
146
|
}
|
|
156
147
|
}
|
|
157
148
|
}
|
|
158
149
|
```
|
|
159
150
|
|
|
160
|
-
|
|
151
|
+
2. prepend `react-hot-loader/patch` to your entries:
|
|
161
152
|
```javascript
|
|
162
153
|
{
|
|
163
154
|
entry:
|
|
@@ -166,7 +157,7 @@ If you need to change your configuration manually:
|
|
|
166
157
|
}
|
|
167
158
|
```
|
|
168
159
|
|
|
169
|
-
|
|
160
|
+
3. you now need to use `webpack-dev-server` (in place of `webpack` or `webpack-watcher`). Make sure the following line is in your development.rb:
|
|
170
161
|
```ruby
|
|
171
162
|
config.x.webpacker[:dev_server_host] = 'http://localhost:8080/'
|
|
172
163
|
```
|
|
@@ -175,7 +166,7 @@ and start `webpack-dev-server` in hot replacement mode:
|
|
|
175
166
|
./bin/webpack-dev-server --hot
|
|
176
167
|
```
|
|
177
168
|
|
|
178
|
-
|
|
169
|
+
4. finally opt in to HMR from your pack files:
|
|
179
170
|
```es6
|
|
180
171
|
import SomeRootReactComponent from 'components/some-root-react-component'
|
|
181
172
|
import WebpackerReact from 'webpacker-react/hmr'
|
|
@@ -186,6 +177,8 @@ and start `webpack-dev-server` in hot replacement mode:
|
|
|
186
177
|
WebpackerReact.renderOnHMR(SomeRootReactComponent) )
|
|
187
178
|
```
|
|
188
179
|
|
|
180
|
+
You also need to ensure that `output.publicPath` are correctly set. This should be already handled by Webpacker.
|
|
181
|
+
|
|
189
182
|
## Development
|
|
190
183
|
|
|
191
184
|
To work on this gem locally, you first need to clone and setup [the example application](https://github.com/renchap/webpacker-react-example).
|
|
@@ -215,27 +208,15 @@ After launching `./bin/webpack-watcher` and `./bin/rails server` in your example
|
|
|
215
208
|
|
|
216
209
|
## Testing
|
|
217
210
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
```sh
|
|
221
|
-
$ test/example_app/bin/yarn
|
|
222
|
-
$ test/example_app/bin/webpack
|
|
223
|
-
```
|
|
211
|
+
If you changed the local javascript package, first ensure it is build (see above).
|
|
224
212
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
```sh
|
|
228
|
-
$ cd test/example_app/vendor/
|
|
229
|
-
$ yarn link "webpacker-react"
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
Finally, run the test suite:
|
|
213
|
+
To run the test suite:
|
|
233
214
|
|
|
234
215
|
```sh
|
|
235
216
|
$ rake test
|
|
236
217
|
```
|
|
237
218
|
|
|
238
|
-
If you change the javascript code, please ensure there are no style errors:
|
|
219
|
+
If you change the javascript code, please ensure there are no style errors before committing:
|
|
239
220
|
|
|
240
221
|
```sh
|
|
241
222
|
$ cd javascript/webpacker_react-npm-module/
|
|
@@ -247,6 +228,10 @@ $ yarn lint
|
|
|
247
228
|
Bug reports and pull requests are welcome on GitHub at https://github.com/renchap/webpacker-react.
|
|
248
229
|
Please feel free to open issues about your needs and features you would like to be added.
|
|
249
230
|
|
|
231
|
+
## Wishlist
|
|
232
|
+
|
|
233
|
+
- [ ] server-side rendering (#3)
|
|
234
|
+
|
|
250
235
|
### Thanks
|
|
251
236
|
|
|
252
237
|
This gem has been inspired by the awesome work on [react-rails](https://github.com/reactjs/react-rails) and [react_on_rails](https://github.com/shakacode/react_on_rails/). Many thanks to their authors!
|
data/Rakefile
CHANGED
data/circle.yml
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
machine:
|
|
2
2
|
node:
|
|
3
|
-
version:
|
|
4
|
-
|
|
3
|
+
version: 7.9.0
|
|
4
|
+
compile:
|
|
5
5
|
post:
|
|
6
6
|
- yarn:
|
|
7
7
|
pwd: javascript/webpacker_react-npm-module
|
|
8
8
|
- yarn:
|
|
9
9
|
pwd: javascript/webpacker_react-npm-module/dist
|
|
10
|
-
- yarn link:
|
|
11
|
-
pwd: javascript/webpacker_react-npm-module/dist
|
|
12
|
-
compile:
|
|
13
|
-
override:
|
|
14
|
-
- test/example_app/bin/yarn
|
|
15
|
-
- yarn link webpacker-react:
|
|
16
|
-
pwd: test/example_app/vendor
|
|
17
|
-
- test/example_app/bin/webpack
|
|
18
10
|
test:
|
|
19
11
|
pre:
|
|
20
12
|
- yarn lint:
|
|
21
13
|
pwd: javascript/webpacker_react-npm-module
|
|
14
|
+
- bundle exec rubocop
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webpacker-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Javascript",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"homepage": "https://github.com/renchap/webpacker-react",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"files": [
|
|
17
17
|
"index.js",
|
|
18
18
|
"configure-hot-module-replacement.js",
|
|
19
|
-
"hmr.js"
|
|
19
|
+
"hmr.js",
|
|
20
|
+
"ujs.js"
|
|
20
21
|
],
|
|
21
22
|
"scripts": {
|
|
22
23
|
"prepublish": "cd .. ; yarn run build"
|
|
@@ -2,14 +2,9 @@ import webpack from 'webpack'
|
|
|
2
2
|
import merge from 'webpack-merge'
|
|
3
3
|
|
|
4
4
|
function configureHotModuleReplacement(originalConfig) {
|
|
5
|
-
const webpackDevServerAddr = process.env.WEBPACK_DEV_SERVER_ADDR || 'http://localhost:8080/'
|
|
6
5
|
const config = merge(
|
|
7
6
|
originalConfig,
|
|
8
7
|
{
|
|
9
|
-
output: {
|
|
10
|
-
// needed for HMR to know where to load the hot update chunks
|
|
11
|
-
publicPath: webpackDevServerAddr
|
|
12
|
-
},
|
|
13
8
|
plugins: [
|
|
14
9
|
new webpack.NamedModulesPlugin()
|
|
15
10
|
]
|
|
@@ -1573,7 +1573,7 @@ lodash.cond@^4.3.0:
|
|
|
1573
1573
|
version "4.5.2"
|
|
1574
1574
|
resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
|
|
1575
1575
|
|
|
1576
|
-
lodash@^4.0.0, lodash@^4.2.0, lodash@^4.3.0
|
|
1576
|
+
lodash@^4.0.0, lodash@^4.2.0, lodash@^4.3.0:
|
|
1577
1577
|
version "4.17.4"
|
|
1578
1578
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
|
1579
1579
|
|
|
@@ -2010,13 +2010,7 @@ restore-cursor@^1.0.1:
|
|
|
2010
2010
|
exit-hook "^1.0.0"
|
|
2011
2011
|
onetime "^1.0.0"
|
|
2012
2012
|
|
|
2013
|
-
rimraf@2, rimraf@^2.2.8:
|
|
2014
|
-
version "2.6.1"
|
|
2015
|
-
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
|
|
2016
|
-
dependencies:
|
|
2017
|
-
glob "^7.0.5"
|
|
2018
|
-
|
|
2019
|
-
rimraf@~2.5.1, rimraf@~2.5.4:
|
|
2013
|
+
rimraf@2, rimraf@^2.2.8, rimraf@~2.5.1, rimraf@~2.5.4:
|
|
2020
2014
|
version "2.5.4"
|
|
2021
2015
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
|
|
2022
2016
|
dependencies:
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# webpacker:check_webpack_binstubs is looking for binstubs
|
|
2
|
+
# in the gem root directory. We need to disable it for our
|
|
3
|
+
# tests, as it tries to check they exist when loading the
|
|
4
|
+
# example app
|
|
5
|
+
|
|
6
|
+
task "webpacker:check_webpack_binstubs"
|
|
7
|
+
Rake::Task["webpacker:check_webpack_binstubs"].clear
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require "English"
|
|
2
|
+
|
|
3
|
+
namespace :example_app do
|
|
4
|
+
desc "Runs yarn in test/example_app"
|
|
5
|
+
task :yarn do
|
|
6
|
+
sh "cd test/example_app && yarn"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
desc "Runs webpack in test/example_app"
|
|
10
|
+
task webpack: :yarn do
|
|
11
|
+
sh "cd test/example_app && NODE_ENV=test ./bin/webpack"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Rake::Task["test"].enhance ["example_app:webpack"]
|
|
@@ -11,8 +11,10 @@ module Webpacker
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def render(props = {}, options = {})
|
|
14
|
+
tag = options.delete(:tag) || :div
|
|
14
15
|
data = { data: { "react-class" => @name, "react-props" => props.to_json } }
|
|
15
|
-
|
|
16
|
+
|
|
17
|
+
content_tag(tag, nil, options.deep_merge(data))
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -12,7 +12,8 @@ module Webpacker
|
|
|
12
12
|
initializer :webpacker_react_renderer, group: :all do |_app|
|
|
13
13
|
ActionController::Renderers.add :react_component do |component_name, options|
|
|
14
14
|
props = options.fetch(:props, {})
|
|
15
|
-
|
|
15
|
+
tag_options = options.fetch(:tag_options, {})
|
|
16
|
+
html = Webpacker::React::Component.new(component_name).render(props, tag_options)
|
|
16
17
|
render_options = options.merge(inline: html)
|
|
17
18
|
render(render_options)
|
|
18
19
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: webpacker-react
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Renaud Chaput
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-05-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: webpacker
|
|
@@ -108,6 +108,7 @@ files:
|
|
|
108
108
|
- CHANGELOG.md
|
|
109
109
|
- CODE_OF_CONDUCT.md
|
|
110
110
|
- Gemfile
|
|
111
|
+
- Gemfile.lock
|
|
111
112
|
- README.md
|
|
112
113
|
- Rakefile
|
|
113
114
|
- _config.yml
|
|
@@ -124,6 +125,8 @@ files:
|
|
|
124
125
|
- javascript/webpacker_react-npm-module/src/index.js
|
|
125
126
|
- javascript/webpacker_react-npm-module/src/ujs.js
|
|
126
127
|
- javascript/webpacker_react-npm-module/yarn.lock
|
|
128
|
+
- lib/tasks/disable_webpacker_checks.rake
|
|
129
|
+
- lib/tasks/example_app.rake
|
|
127
130
|
- lib/webpacker/react.rb
|
|
128
131
|
- lib/webpacker/react/component.rb
|
|
129
132
|
- lib/webpacker/react/helpers.rb
|