Skip to content

Commit ee947d4

Browse files
authored
Merge pull request #2017 from tf/shakapacker
Support both Webpacker and Shakapacker
2 parents b622c99 + c4f1ffb commit ee947d4

File tree

7 files changed

+49
-27
lines changed

7 files changed

+49
-27
lines changed

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ if Pageflow::RailsVersion.experimental?
2626
# use shakapacker need to add it to their Gemfile themselves. Requiring
2727
# shakapacker in an engine file (like we normally do) would force all
2828
# host application to install shakapacker.
29-
gem 'shakapacker'
29+
gem 'shakapacker', '~> 7.0'
3030
else
3131
# Make webpacker available in specs. Host applications that want to
3232
# use webpacker need to add it to their Gemfile themselves. Requiring
3333
# webpacker in an engine file (like we normally do) would force all
3434
# host application to install webpacker.
35-
gem 'webpacker'
35+
gem 'webpacker', '~> 4.2'
3636
end
3737

3838
# Make tests fail on JS errors

entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module PageflowScrolled
22
# @api private
33
module PacksHelper
44
def scrolled_frontend_javascript_packs_tag(entry, options)
5-
if Pageflow::RailsVersion.experimental?
5+
if defined?(Shakapacker)
66
javascript_pack_tag(
77
*scrolled_frontend_packs(entry, **options),
88
defer: false
@@ -15,7 +15,7 @@ def scrolled_frontend_javascript_packs_tag(entry, options)
1515
end
1616

1717
def scrolled_frontend_stylesheet_packs_tag(entry, options)
18-
if Pageflow::RailsVersion.experimental?
18+
if defined?(Shakapacker)
1919
stylesheet_pack_tag(
2020
*scrolled_frontend_packs(entry, **options),
2121
media: 'all'
@@ -29,7 +29,7 @@ def scrolled_frontend_stylesheet_packs_tag(entry, options)
2929
end
3030

3131
def scrolled_editor_javascript_packs_tag(entry)
32-
if Pageflow::RailsVersion.experimental?
32+
if defined?(Shakapacker)
3333
javascript_pack_tag(
3434
*scrolled_editor_packs(entry),
3535
defer: false

entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def scrolled_theme_asset_path(theme,
66
theme_file_role: nil,
77
theme_file_style: :resized,
88
relative_url: false)
9-
prefix = Pageflow::RailsVersion.experimental? ? 'static' : 'media'
9+
prefix = defined?(Shakapacker) ? 'static' : 'media'
1010

1111
path =
1212
theme.files.dig(theme_file_role, theme_file_style) ||

entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<%= stylesheet_link_tag 'pageflow_paged/editor', media: 'all' %>
22

3-
<% if Pageflow::RailsVersion.experimental? %>
3+
<% if defined?(Shakapacker) %>
44
<%= stylesheet_pack_tag 'pageflow-scrolled-frontend' %>
55
<% else %>
66
<%= stylesheet_packs_with_chunks_tag 'pageflow-scrolled-frontend' %>

entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,19 @@ def theme_plugin
3030
end
3131

3232
def install_packages
33-
if Pageflow::RailsVersion.experimental?
33+
if defined?(Shakapacker)
3434
run 'yarn add css-loader style-loader' \
3535
' mini-css-extract-plugin css-minimizer-webpack-plugin' \
36-
' postcss postcss-loader postcss-url' \
36+
' postcss postcss-preset-env postcss-loader' \
37+
' postcss-import postcss-url postcss-flexbugs-fixes' \
3738
' @fontsource/source-sans-pro'
3839
else
3940
run 'yarn add postcss-url@^8.0.0 @fontsource/source-sans-pro'
4041
end
4142
end
4243

4344
def webpack_config
44-
return unless Pageflow::RailsVersion.experimental?
45+
return unless defined?(Shakapacker)
4546

4647
gsub_file(
4748
'config/webpack/webpack.config.js',
@@ -54,7 +55,11 @@ def webpack_config
5455
'const webpackConfig = generateWebpackConfig()',
5556
<<~JS
5657
const webpackConfig = merge(
57-
generateWebpackConfig(),
58+
generateWebpackConfig({
59+
resolve: {
60+
extensions: ['.css']
61+
}
62+
}),
5863
require('pageflow/config/webpack5'),
5964
require('pageflow-scrolled/config/webpack')
6065
)
@@ -88,7 +93,7 @@ def webpack_config
8893
end
8994

9095
def webpack_environment
91-
return if Pageflow::RailsVersion.experimental?
96+
return if defined?(Shakapacker)
9297

9398
inject_into_file('config/webpack/environment.js',
9499
before: "module.exports = environment\n") do
@@ -109,7 +114,7 @@ def webpack_environment
109114
end
110115

111116
def webpacker_yml
112-
return if Pageflow::RailsVersion.experimental?
117+
return if defined?(Shakapacker)
113118

114119
gsub_file('config/webpacker.yml',
115120
'extract_css: false',
@@ -122,12 +127,29 @@ def webpacker_yml
122127
end
123128

124129
def postcss_config
125-
return if Pageflow::RailsVersion.experimental?
126-
127-
inject_into_file('postcss.config.js',
128-
after: "require('postcss-import'),\n") do
129-
" // Make relative urls in fontsource packages work\n" \
130-
" require('postcss-url')({url: 'rebase'}),\n"
130+
if defined?(Shakapacker)
131+
create_file 'postcss.config.js', <<~JS
132+
module.exports = {
133+
plugins: [
134+
require('postcss-import'),
135+
// Make relative urls in fontsource packages work
136+
require('postcss-url')({url: 'rebase'}),
137+
require('postcss-flexbugs-fixes'),
138+
require('postcss-preset-env')({
139+
autoprefixer: {
140+
flexbox: 'no-2009'
141+
},
142+
stage: 3
143+
})
144+
]
145+
}
146+
JS
147+
else
148+
inject_into_file('postcss.config.js',
149+
after: "require('postcss-import'),\n") do
150+
" // Make relative urls in fontsource packages work\n" \
151+
" require('postcss-url')({url: 'rebase'}),\n"
152+
end
131153
end
132154
end
133155

entry_types/scrolled/spec/support/config/webpacker.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
unless Pageflow::RailsVersion.experimental?
1+
unless defined?(Shakapacker)
22
# Make sure packs are recompiled for Capybara specs when Rollup
33
# outputs change
44

pageflow.gemspec

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,6 @@ Gem::Specification.new do |s|
128128
# which we currently depend on in pageflow/engine.rb
129129
s.add_dependency 'sprockets', '< 4'
130130

131-
# Used for Webpack build in host application
132-
if Pageflow::RailsVersion.experimental?
133-
s.add_dependency 'shakapacker', '~> 7.0'
134-
else
135-
s.add_dependency 'webpacker', '~> 4.2'
136-
end
137-
138131
# Using translations from rails locales in javascript code.
139132
s.add_dependency 'i18n-js', '~> 2.1'
140133

@@ -164,6 +157,13 @@ Gem::Specification.new do |s|
164157
# string encryptor/decryptor
165158
s.add_dependency 'symmetric-encryption', '~> 4.3.1'
166159

160+
# Used for Webpack build in host application
161+
if Pageflow::RailsVersion.experimental?
162+
s.add_development_dependency 'shakapacker', '~> 7.0'
163+
else
164+
s.add_development_dependency 'webpacker', '~> 4.2'
165+
end
166+
167167
# Used by the dummy rails application
168168
s.add_development_dependency 'mysql2', '~> 0.5.2'
169169

0 commit comments

Comments
 (0)