rs-webpack-rails 0.10.1 → 0.11.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 +5 -5
- data/README.md +11 -1
- data/lib/capistrano/tasks/set_rails_env.rake +9 -0
- data/lib/capistrano/tasks/webpack.rake +115 -0
- data/lib/capistrano/webpack.rb +1 -0
- data/lib/webpack/rails/version.rb +1 -1
- metadata +96 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 84005ce365273d06f62a49fc524b22d219cdb8679acc9a1a8cedea13a44eafa3
|
4
|
+
data.tar.gz: c13b5532de784b2c5613a043de393f604b04be2fa917ab907065eea0f14baf36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a413049f82bcac932ca55ad650df44a74374e137e2957f4d9234bcb92e11748ae56a1fd3b1107a229e13b9594be3af67fdbe0bee173911bdf966965103313f2e
|
7
|
+
data.tar.gz: 1738fd5127cafcc02145cbc6ed8990a2570ba27613863549f2a9c1f66be7ed83273d906a1d6d997255239ae944c0ba272f8e940b937c84bdb10cbcf9907f477c
|
data/README.md
CHANGED
@@ -12,7 +12,6 @@ gem 'rs-webpack-rails'
|
|
12
12
|
|
13
13
|
Create webpack config at config/webpack.config.js (see example)
|
14
14
|
|
15
|
-
|
16
15
|
#### Usage with manifest plugin:
|
17
16
|
|
18
17
|
```
|
@@ -27,6 +26,17 @@ new ManifestPlugin({
|
|
27
26
|
}),
|
28
27
|
```
|
29
28
|
|
29
|
+
### Capistrano integration
|
30
|
+
```
|
31
|
+
# Capfile
|
32
|
+
require 'capistrano/webpack'
|
33
|
+
```
|
34
|
+
that's it. Based on capistrano-rails with proper manifest management & rollback.
|
35
|
+
|
36
|
+
### NOTE:
|
37
|
+
If using "capistrano/rails/assets", it should be BEFORE this as it calls yarn:install
|
38
|
+
If not using it, use [capistrano-yarn](https://github.com/ManifoldScholar/capistrano-yarn)
|
39
|
+
|
30
40
|
# rs-webpack-rails
|
31
41
|
|
32
42
|
**rs-webpack-rails** gives you tools to integrate Webpack in to an existing Ruby on Rails application.
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# based on https://github.com/capistrano/rails/blob/master/lib/capistrano/tasks/assets.rake
|
2
|
+
|
3
|
+
load File.expand_path("../set_rails_env.rake", __FILE__)
|
4
|
+
|
5
|
+
module Capistrano
|
6
|
+
class FileNotFound < StandardError
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :deploy do
|
11
|
+
desc 'Normalize webpack asset timestamps'
|
12
|
+
task :normalize_webpack_assets => [:set_rails_env] do
|
13
|
+
on release_roles(fetch(:assets_roles)) do
|
14
|
+
assets = Array(fetch(:normalize_asset_timestamps, []))
|
15
|
+
if assets.any?
|
16
|
+
within release_path do
|
17
|
+
execute :find, "#{assets.join(' ')} -exec touch -t #{asset_timestamp} {} ';'; true"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Compile webpack assets'
|
24
|
+
task :compile_webpack_assets => [:webpack_set_rails_env] do
|
25
|
+
invoke 'deploy:webpack:precompile'
|
26
|
+
invoke 'deploy:webpack:backup_manifest'
|
27
|
+
end
|
28
|
+
|
29
|
+
desc 'Rollback webpack assets'
|
30
|
+
task :rollback_webpack_assets => [:set_rails_env] do
|
31
|
+
begin
|
32
|
+
invoke 'deploy:webpack:restore_manifest'
|
33
|
+
rescue Capistrano::FileNotFound
|
34
|
+
invoke 'deploy:compile_webpack_assets'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
after 'deploy:updated', 'deploy:compile_webpack_assets'
|
39
|
+
after 'deploy:updated', 'deploy:normalize_webpack_assets'
|
40
|
+
after 'deploy:reverted', 'deploy:rollback_webpack_assets'
|
41
|
+
|
42
|
+
namespace :webpack do
|
43
|
+
task :precompile do
|
44
|
+
on release_roles(fetch(:webpack_roles)) do
|
45
|
+
within release_path do
|
46
|
+
with rails_env: fetch(:rails_env), rails_groups: fetch(:rails_assets_groups) do
|
47
|
+
execute :rake, "webpack:compile"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
task :backup_manifest do
|
54
|
+
on release_roles(fetch(:webpack_roles)) do
|
55
|
+
within release_path do
|
56
|
+
backup_path = release_path.join('webpack_manifest_backup')
|
57
|
+
|
58
|
+
execute :mkdir, '-p', backup_path
|
59
|
+
execute :cp,
|
60
|
+
detect_manifest_path,
|
61
|
+
backup_path
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
task :restore_manifest do
|
67
|
+
on release_roles(fetch(:webpack_roles)) do
|
68
|
+
within release_path do
|
69
|
+
target = detect_manifest_path
|
70
|
+
source = release_path.join('webpack_manifest_backup', File.basename(target))
|
71
|
+
if test "[[ -f #{source} && -f #{target} ]]"
|
72
|
+
execute :cp, source, target
|
73
|
+
else
|
74
|
+
msg = 'Rails assets manifest file (or backup file) not found.'
|
75
|
+
warn msg
|
76
|
+
fail Capistrano::FileNotFound, msg
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def detect_manifest_path
|
83
|
+
%w(
|
84
|
+
manifest.json
|
85
|
+
).each do |pattern|
|
86
|
+
candidate = release_path.join('public', fetch(:webpack_prefix), pattern)
|
87
|
+
return capture(:ls, candidate).strip.gsub(/(\r|\n)/,' ') if test(:ls, candidate)
|
88
|
+
end
|
89
|
+
msg = 'Webpack assets manifest file not found.'
|
90
|
+
warn msg
|
91
|
+
fail Capistrano::FileNotFound, msg
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# we can't set linked_dirs in load:defaults,
|
97
|
+
# as assets_prefix will always have a default value
|
98
|
+
namespace :deploy do
|
99
|
+
task :set_linked_dirs do
|
100
|
+
linked_dirs = fetch(:linked_dirs, [])
|
101
|
+
unless linked_dirs.include?('public')
|
102
|
+
linked_dirs << "public/#{fetch(:webpack_prefix)}"
|
103
|
+
set :linked_dirs, linked_dirs.uniq
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
after 'deploy:set_rails_env', 'deploy:set_linked_dirs'
|
109
|
+
|
110
|
+
namespace :load do
|
111
|
+
task :defaults do
|
112
|
+
set :webpack_roles, fetch(:webpack_roles, [:web])
|
113
|
+
set :webpack_prefix, fetch(:webpack_prefix, 'webpack')
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../tasks/webpack.rake", __FILE__)
|
metadata
CHANGED
@@ -1,43 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rs-webpack-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Pearson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rails
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
47
|
+
version: 5.0.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 5.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rdoc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
34
90
|
type: :development
|
35
91
|
prerelease: false
|
36
92
|
version_requirements: !ruby/object:Gem::Requirement
|
37
93
|
requirements:
|
38
94
|
- - ">="
|
39
95
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: railties
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 5.0.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 5.0.0
|
41
125
|
description: Simple webpack and rails intergration.
|
42
126
|
email:
|
43
127
|
- mipearson@gmail.com
|
@@ -55,6 +139,9 @@ files:
|
|
55
139
|
- example/webpack.config.js
|
56
140
|
- example/webpack/application.js
|
57
141
|
- example/yarn.lock
|
142
|
+
- lib/capistrano/tasks/set_rails_env.rake
|
143
|
+
- lib/capistrano/tasks/webpack.rake
|
144
|
+
- lib/capistrano/webpack.rb
|
58
145
|
- lib/generators/webpack_rails/install_generator.rb
|
59
146
|
- lib/rs-webpack-rails.rb
|
60
147
|
- lib/tasks/webpack.rake
|
@@ -84,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
171
|
version: '0'
|
85
172
|
requirements: []
|
86
173
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.6
|
174
|
+
rubygems_version: 2.7.6
|
88
175
|
signing_key:
|
89
176
|
specification_version: 4
|
90
177
|
summary: Simple webpack and rails intergration.
|