react_on_rails 9.0.0.beta.6 → 9.0.0.beta.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -9
- data/Gemfile +4 -1
- data/lib/generators/react_on_rails/base_generator.rb +1 -1
- data/lib/generators/react_on_rails/templates/base/base/client/webpack.config.js +7 -6
- data/lib/generators/react_on_rails/templates/base/base/config/webpacker.yml +1 -3
- data/lib/react_on_rails/utils.rb +21 -12
- data/lib/react_on_rails/version.rb +1 -1
- data/package.json +1 -1
- data/webpackConfigLoader.js +30 -47
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55bfe083238d38b5106cdc776bf9f96ec6a93b5c
|
4
|
+
data.tar.gz: '03907dec757d9ac37df327e9f002d56a3f529fe2'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1d670a7c73bc79180efbfef68012e0e5119b29d0e2cdf53a6ce0e3101299b0d2b471d997e85b1b3b826069105bd5ac8a0574732d3c808ef52f2a7620a02a973
|
7
|
+
data.tar.gz: 2b75e5a43ca5b0294751f43c087429fb49bf69c8d76b55c7c8b2ee8108f99d4b6139e0212919a696b630bb070ba9676d403a544db9147f4254ac9d4deb724797
|
data/CHANGELOG.md
CHANGED
@@ -18,23 +18,47 @@ All 9.0.0 beta versions can be viewed in [PR 908](https://github.com/shakacode/r
|
|
18
18
|
|
19
19
|
```rb
|
20
20
|
gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
|
21
|
-
branch: "issue-464-merge-webpacker-lite-into-webpacker"
|
21
|
+
branch: "issue-464-merge-webpacker-lite-into-webpacker-v2"
|
22
22
|
```
|
23
23
|
|
24
24
|
- Update for the renaming in the `WebpackConfigLoader` in your webpack configuration.
|
25
25
|
You will need to rename the following object properties:
|
26
|
-
-
|
27
|
-
-
|
28
|
-
-
|
26
|
+
- webpackOutputPath ==> output.path
|
27
|
+
- webpackPublicOutputDir ==> output.publicPath
|
28
|
+
- hotReloadingUrl ==> output.publicPathWithHost
|
29
|
+
- hotReloadingHostname ==> settings.dev_server.host
|
30
|
+
- hotReloadingPort ==> settings.dev_server.port
|
31
|
+
- hmr ==> settings.dev_server.hmr
|
32
|
+
- manifest ==> Remove this one. We use the default for Webpack of manifest.json
|
33
|
+
- env ==> Use `const { env } = require('process');
|
34
|
+
- devBuild ==> Use `const devBuild = process.env.NODE_ENV !== 'production';
|
35
|
+
|
36
|
+
- Edit your Webpack.config files:
|
37
|
+
- Change your Webpack output to be like:
|
38
|
+
```
|
39
|
+
// Leading slash is necessary
|
40
|
+
publicPath: `/${output.publicPath}`,
|
41
|
+
path: output.path,
|
42
|
+
```
|
43
|
+
- Change your ManifestPlugin definition to include publicPath
|
44
|
+
```
|
45
|
+
output: {
|
46
|
+
// Name comes from the entry section.
|
47
|
+
filename: '[name]-[chunkhash].js',
|
48
|
+
|
49
|
+
publicPath: output.publicPath,
|
50
|
+
path: output.path,
|
51
|
+
},
|
52
|
+
|
53
|
+
```
|
54
|
+
|
29
55
|
|
30
56
|
- Find your `webpacker_lite.yml` and rename it to `webpacker.yml`
|
31
57
|
- Add a section like this under your development env:
|
32
58
|
```
|
33
59
|
dev_server:
|
34
60
|
host: localhost
|
35
|
-
port:
|
36
|
-
https: false
|
37
|
-
# Can be enabled by export WEBPACKER_HMR=TRUE in env
|
61
|
+
port: 3035
|
38
62
|
hmr: false
|
39
63
|
```
|
40
64
|
- See the example `spec/dummy/config/webpacker.yml`.
|
@@ -61,6 +85,19 @@ deploying assets using the webpack-dev-server.
|
|
61
85
|
### [9.0.0]
|
62
86
|
*Diffs for the beta to master*
|
63
87
|
|
88
|
+
### [9.0.0-beta.7]
|
89
|
+
- Depend on updated rails/webpacker in branch
|
90
|
+
|
91
|
+
gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
|
92
|
+
branch: "issue-464-merge-webpacker-lite-into-webpacker-v2"
|
93
|
+
|
94
|
+
|
95
|
+
### [9.0.0-beta.6]
|
96
|
+
- Change "hot" to "hmr".
|
97
|
+
|
98
|
+
### [9.0.0-beta.3]
|
99
|
+
- Fix typo on webpackConfigLoader.js
|
100
|
+
|
64
101
|
### [9.0.0-beta.3]
|
65
102
|
- Fix typo on webpackConfigLoader.js
|
66
103
|
|
@@ -688,8 +725,12 @@ Best done with Object destructing:
|
|
688
725
|
##### Fixed
|
689
726
|
- Fix several generator related issues.
|
690
727
|
|
691
|
-
[Unreleased]: https://github.com/shakacode/react_on_rails/compare/rails-webpacker...9.0.0-beta.
|
692
|
-
[9.0.0]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.
|
728
|
+
[Unreleased]: https://github.com/shakacode/react_on_rails/compare/rails-webpacker...9.0.0-beta.7
|
729
|
+
[9.0.0]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.7...master
|
730
|
+
[9.0.0-beta.7]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.7...9.0.0-beta.6
|
731
|
+
[9.0.0-beta.6]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.6...9.0.0-beta.5
|
732
|
+
[9.0.0-beta.5]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.5...9.0.0-beta.4
|
733
|
+
[9.0.0-beta.4]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.4...9.0.0-beta.3
|
693
734
|
[9.0.0-beta.3]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.3...9.0.0-beta.2
|
694
735
|
[9.0.0-beta.2]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.2...9.0.0-beta.1
|
695
736
|
[9.0.0-beta.1]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.1...master
|
data/Gemfile
CHANGED
@@ -39,6 +39,9 @@ gem "launchy"
|
|
39
39
|
gem "poltergeist"
|
40
40
|
gem "selenium-webdriver"
|
41
41
|
gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
|
42
|
-
branch: "issue-464-merge-webpacker-lite-into-webpacker"
|
42
|
+
branch: "issue-464-merge-webpacker-lite-into-webpacker-v2"
|
43
|
+
|
44
|
+
# TODO: remove once we get out of beta.
|
45
|
+
# gem 'webpacker', path: "../../forks/webpacker"
|
43
46
|
|
44
47
|
gem "rainbow"
|
@@ -75,7 +75,7 @@ module ReactOnRails
|
|
75
75
|
|
76
76
|
gem 'mini_racer', platforms: :ruby
|
77
77
|
gem 'webpacker', git: "https://github.com/shakacode/webpacker.git",
|
78
|
-
branch: "issue-464-merge-webpacker-lite-into-webpacker"
|
78
|
+
branch: "issue-464-merge-webpacker-lite-into-webpacker-v2"
|
79
79
|
GEMS
|
80
80
|
append_to_file("Gemfile",
|
81
81
|
gems)
|
@@ -9,8 +9,7 @@ const ManifestPlugin = require('webpack-manifest-plugin');
|
|
9
9
|
const webpackConfigLoader = require('react-on-rails/webpackConfigLoader');
|
10
10
|
|
11
11
|
const configPath = resolve('..', 'config');
|
12
|
-
const { devBuild,
|
13
|
-
webpackConfigLoader(configPath);
|
12
|
+
const { devBuild, output } = webpackConfigLoader(configPath);
|
14
13
|
|
15
14
|
const config = {
|
16
15
|
|
@@ -27,11 +26,11 @@ const config = {
|
|
27
26
|
|
28
27
|
output: {
|
29
28
|
// Name comes from the entry section.
|
30
|
-
filename: '[name]-[
|
29
|
+
filename: '[name]-[chunkhash].js',
|
31
30
|
|
32
31
|
// Leading slash is necessary
|
33
|
-
publicPath: `/${
|
34
|
-
path:
|
32
|
+
publicPath: `/${output.publicPath}`,
|
33
|
+
path: output.path,
|
35
34
|
},
|
36
35
|
|
37
36
|
resolve: {
|
@@ -43,7 +42,9 @@ const config = {
|
|
43
42
|
NODE_ENV: 'development', // use 'development' unless process.env.NODE_ENV is defined
|
44
43
|
DEBUG: false,
|
45
44
|
}),
|
46
|
-
new ManifestPlugin({
|
45
|
+
new ManifestPlugin({
|
46
|
+
publicPath: output.publicPath,
|
47
|
+
writeToFileEmit: true }),
|
47
48
|
],
|
48
49
|
|
49
50
|
module: {
|
@@ -11,9 +11,7 @@ development:
|
|
11
11
|
# Temporarily disabling live-reloading until the server script is added.
|
12
12
|
# dev_server:
|
13
13
|
# host: localhost
|
14
|
-
# port:
|
15
|
-
# https: false
|
16
|
-
# # Can be enabled by export WEBPACKER_HMR=TRUE in env
|
14
|
+
# port: 3035
|
17
15
|
# hmr: false
|
18
16
|
|
19
17
|
test:
|
data/lib/react_on_rails/utils.rb
CHANGED
@@ -62,22 +62,31 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def self.server_bundle_js_file_path
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
|
65
|
+
# Either:
|
66
|
+
# 1. Using same bundle for both server and client, so server bundle will be hashed in manifest
|
67
|
+
# 2. Using a different bundle (different Webpack config), so file is not hashed, and
|
68
|
+
# bundle_js_path will throw.
|
69
|
+
# 3. Not using webpacker, and bundle_js_path always returns
|
70
|
+
|
71
|
+
# Note, server bundle should not be in the manifest
|
72
|
+
# If using webpacker gem per https://github.com/rails/webpacker/issues/571
|
73
|
+
return @server_bundle_path if @server_bundle_path && !Rails.env.development?
|
74
|
+
|
75
|
+
bundle_name = ReactOnRails.configuration.server_bundle_js_file
|
76
|
+
@server_bundle_path = begin
|
77
|
+
bundle_js_file_path(bundle_name)
|
78
|
+
rescue Webpacker::Manifest::MissingEntryError
|
79
|
+
Rails.root.join(File.join(Webpacker.config.public_output_path, bundle_name)).to_s
|
80
|
+
end
|
70
81
|
end
|
71
82
|
|
72
83
|
def self.bundle_js_file_path(bundle_name)
|
73
84
|
if using_webpacker?
|
74
|
-
#
|
75
|
-
|
76
|
-
hashed_name = Webpacker::Manifest.lookup(bundle_name, throw_if_missing: false)
|
77
|
-
hashed_name = bundle_name if hashed_name.blank?
|
78
|
-
Rails.root.join(File.join(Webpacker::Configuration.output_path, hashed_name)).to_s
|
85
|
+
# Next line will throw if the file or manifest does not exist
|
86
|
+
Webpacker.manifest.lookup(bundle_name)
|
79
87
|
else
|
80
|
-
#
|
88
|
+
# Default to the non-hashed name in the specified output directory, which, for legacy
|
89
|
+
# React on Rails, this is the output directory picked up by the asset pipeline.
|
81
90
|
File.join(ReactOnRails.configuration.generated_assets_dir, bundle_name)
|
82
91
|
end
|
83
92
|
end
|
@@ -107,7 +116,7 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
|
|
107
116
|
end
|
108
117
|
|
109
118
|
def self.manifest_exists?
|
110
|
-
Webpacker
|
119
|
+
Webpacker.config.public_manifest_path.exist?
|
111
120
|
end
|
112
121
|
|
113
122
|
module Required
|
data/package.json
CHANGED
data/webpackConfigLoader.js
CHANGED
@@ -5,70 +5,53 @@
|
|
5
5
|
* NOTE: for HMR reloading, env.WEBPACKER_HMR value will override any config value. This env value
|
6
6
|
* should be set to TRUE to turn this on.
|
7
7
|
*/
|
8
|
+
|
8
9
|
const { join, resolve } = require('path');
|
10
|
+
const { env } = require('process');
|
9
11
|
const { safeLoad } = require('js-yaml');
|
10
12
|
const { readFileSync } = require('fs');
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
|
15
|
+
function removeOuterSlashes(string) {
|
16
|
+
return string.replace(/^\/*/, '').replace(/\/*$/, '');
|
17
|
+
}
|
18
|
+
|
19
|
+
function formatPublicPath(host = '', path = '') {
|
20
|
+
let formattedHost = removeOuterSlashes(host);
|
21
|
+
if (formattedHost && !/^http/i.test(formattedHost)) {
|
22
|
+
formattedHost = `//${formattedHost}`;
|
23
|
+
}
|
24
|
+
const formattedPath = removeOuterSlashes(path);
|
25
|
+
return `${formattedHost}/${formattedPath}/`;
|
26
|
+
}
|
18
27
|
|
19
28
|
/**
|
20
29
|
* @param configPath, location where webpacker.yml will be found
|
30
|
+
* Return values are consistent with Webpacker's js helpers
|
21
31
|
* @returns {{
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
* devServerPort,
|
27
|
-
* devServerUrl,
|
28
|
-
* manifest,
|
29
|
-
* webpackOutputPath,
|
30
|
-
* webpackPublicOutputDir
|
31
|
-
* }}
|
32
|
+
settings,
|
33
|
+
resolvedModules,
|
34
|
+
output: { path, publicPath, publicPathWithHosts }
|
35
|
+
}}
|
32
36
|
*/
|
33
37
|
const configLoader = (configPath) => {
|
34
|
-
const env = process.env;
|
35
|
-
|
36
38
|
// Some test environments might not have the NODE_ENV set, so we'll have fallbacks.
|
37
39
|
const configEnv = (process.env.NODE_ENV || process.env.RAILS_ENV || 'development');
|
38
40
|
const ymlConfigPath = join(configPath, 'webpacker.yml');
|
39
|
-
const
|
40
|
-
const devServerValues = configuration.dev_server;
|
41
|
-
const devBuild = configEnv !== 'production';
|
42
|
-
const devServerHost = devServerValues && (devServerValues.host || DEFAULT_DEV_SERVER_HOST);
|
43
|
-
const devServerPort = devServerValues && (devServerValues.port || DEFAULT_DEV_SERVER_PORT);
|
44
|
-
const devServerHttps = devServerValues && (devServerValues.https || DEFAULT_DEV_SERVER_HTTPS);
|
45
|
-
const devServerHmr = devServerValues && (devServerValues.hmr || DEFAULT_DEV_SERVER_HMR);
|
41
|
+
const settings = safeLoad(readFileSync(ymlConfigPath, 'utf8'))[configEnv];
|
46
42
|
|
47
43
|
// NOTE: Rails path is hard coded to `/public`
|
48
|
-
const
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
const hmrReloadingEnabled = !!devServerHmr || env.WEBPACKER_HMR === 'TRUE';
|
56
|
-
|
57
|
-
let devServerUrl = null;
|
58
|
-
if (devServerValues) {
|
59
|
-
devServerUrl = `http${devServerHttps ? 's' : ''}://${devServerHost}:${devServerPort}`;
|
60
|
-
}
|
44
|
+
const output = {
|
45
|
+
// Next line differs from the webpacker definition as we use the configPath to create
|
46
|
+
// the relative path.
|
47
|
+
path: resolve(configPath, '..', 'public', settings.public_output_path),
|
48
|
+
publicPath: `/${settings.public_output_path}/`.replace(/([^:]\/)\/+/g, '$1'),
|
49
|
+
publicPathWithHost: formatPublicPath(env.ASSET_HOST, settings.public_output_path),
|
50
|
+
};
|
61
51
|
|
62
52
|
return {
|
63
|
-
|
64
|
-
|
65
|
-
devServerEnabled,
|
66
|
-
devServerHost,
|
67
|
-
devServerPort,
|
68
|
-
devServerUrl,
|
69
|
-
manifest,
|
70
|
-
webpackOutputPath,
|
71
|
-
webpackPublicOutputDir,
|
53
|
+
settings,
|
54
|
+
output,
|
72
55
|
};
|
73
56
|
};
|
74
57
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.0.0.beta.
|
4
|
+
version: 9.0.0.beta.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Gordon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rainbow
|