react_on_rails 9.0.0.beta.6 → 9.0.0.beta.7
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 +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
|