shakapacker 6.6.0 → 7.0.0.rc.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/.github/workflows/ruby-backward-compatibility.yml +43 -0
- data/CHANGELOG.md +50 -4
- data/CONTRIBUTING.md +4 -4
- data/Gemfile.development_dependencies +1 -1
- data/README.md +113 -88
- data/Rakefile +5 -0
- data/config/shakapacker.yml +1 -0
- data/docs/deployment.md +12 -10
- data/docs/developing_webpacker.md +5 -5
- data/docs/react.md +10 -6
- data/docs/style_loader_vs_mini_css.md +2 -2
- data/docs/troubleshooting.md +22 -18
- data/docs/using_esbuild_loader.md +5 -3
- data/docs/using_swc_loader.md +2 -2
- data/docs/v6_upgrade.md +2 -2
- data/docs/v7_upgrade.md +56 -0
- data/lib/install/bin/shakapacker +13 -0
- data/lib/install/bin/shakapacker-dev-server +13 -0
- data/lib/install/config/{webpacker.yml → shakapacker.yml} +13 -8
- data/lib/install/template.rb +7 -7
- data/lib/{webpacker → shakapacker}/base_strategy.rb +2 -2
- data/lib/{webpacker → shakapacker}/commands.rb +4 -4
- data/lib/{webpacker → shakapacker}/compiler.rb +43 -15
- data/lib/{webpacker → shakapacker}/compiler_strategy.rb +6 -6
- data/lib/{webpacker → shakapacker}/configuration.rb +52 -21
- data/lib/shakapacker/deprecation_helper.rb +88 -0
- data/lib/{webpacker → shakapacker}/dev_server.rb +27 -4
- data/lib/{webpacker → shakapacker}/dev_server_proxy.rb +4 -4
- data/lib/shakapacker/dev_server_runner.rb +104 -0
- data/lib/{webpacker → shakapacker}/digest_strategy.rb +6 -6
- data/lib/{webpacker → shakapacker}/env.rb +8 -8
- data/lib/{webpacker → shakapacker}/helper.rb +20 -20
- data/lib/{webpacker → shakapacker}/instance.rb +13 -10
- data/lib/{webpacker → shakapacker}/manifest.rb +14 -14
- data/lib/{webpacker → shakapacker}/mtime_strategy.rb +5 -5
- data/lib/shakapacker/railtie.rb +70 -0
- data/lib/shakapacker/runner.rb +28 -0
- data/lib/shakapacker/utils/version_syntax_converter.rb +2 -2
- data/lib/{webpacker → shakapacker}/version.rb +2 -2
- data/lib/{webpacker → shakapacker}/version_checker.rb +8 -8
- data/lib/shakapacker/webpack_runner.rb +67 -0
- data/lib/shakapacker.rb +51 -1
- data/lib/tasks/shakapacker/binstubs.rake +15 -0
- data/lib/tasks/shakapacker/check_binstubs.rake +25 -0
- data/lib/tasks/shakapacker/check_node.rake +31 -0
- data/lib/tasks/shakapacker/check_yarn.rake +33 -0
- data/lib/tasks/shakapacker/clean.rake +23 -0
- data/lib/tasks/shakapacker/clobber.rake +18 -0
- data/lib/tasks/shakapacker/compile.rake +31 -0
- data/lib/tasks/shakapacker/info.rake +21 -0
- data/lib/tasks/shakapacker/install.rake +17 -0
- data/lib/tasks/shakapacker/verify_config.rake +12 -0
- data/lib/tasks/shakapacker/verify_install.rake +4 -0
- data/lib/tasks/shakapacker/yarn_install.rake +24 -0
- data/lib/tasks/shakapacker.rake +18 -0
- data/lib/tasks/webpacker/binstubs.rake +5 -11
- data/lib/tasks/webpacker/check_binstubs.rake +6 -9
- data/lib/tasks/webpacker/check_node.rake +5 -27
- data/lib/tasks/webpacker/check_yarn.rake +5 -29
- data/lib/tasks/webpacker/clean.rake +5 -19
- data/lib/tasks/webpacker/clobber.rake +6 -13
- data/lib/tasks/webpacker/compile.rake +5 -33
- data/lib/tasks/webpacker/info.rake +5 -17
- data/lib/tasks/webpacker/install.rake +5 -13
- data/lib/tasks/webpacker/verify_config.rake +6 -11
- data/lib/tasks/webpacker/verify_install.rake +7 -2
- data/lib/tasks/webpacker/yarn_install.rake +5 -20
- data/lib/tasks/webpacker.rake +15 -13
- data/lib/webpacker/dev_server_runner.rb +9 -96
- data/lib/webpacker/webpack_runner.rb +9 -58
- data/lib/webpacker.rb +3 -47
- data/package/__tests__/config-bc.js +27 -0
- data/package/__tests__/config.js +6 -5
- data/package/__tests__/dev_server-bc.js +46 -0
- data/package/__tests__/dev_server.js +9 -8
- data/package/__tests__/development-bc.js +66 -0
- data/package/__tests__/development.js +36 -5
- data/package/__tests__/env-bc.js +59 -0
- data/package/__tests__/env.js +3 -2
- data/package/__tests__/index.js +13 -0
- data/package/__tests__/production-bc.js +51 -0
- data/package/__tests__/production.js +25 -3
- data/package/__tests__/staging-bc.js +53 -0
- data/package/__tests__/staging.js +27 -4
- data/package/__tests__/test-bc.js +43 -0
- data/package/__tests__/test.js +22 -4
- data/package/babel/preset.js +1 -4
- data/package/config.js +25 -7
- data/package/dev_server.js +7 -4
- data/package/env.js +22 -3
- data/package/environments/__tests__/base-bc.js +107 -0
- data/package/environments/__tests__/base.js +13 -13
- data/package/environments/base.js +1 -1
- data/package/environments/development.js +4 -46
- data/package/environments/production.js +1 -1
- data/package/index.js +11 -4
- data/package/rules/__tests__/__utils__/webpack.js +1 -1
- data/package/rules/__tests__/file.js +27 -0
- data/package/rules/__tests__/swc.js +1 -2
- data/package/rules/file.js +2 -2
- data/package/utils/configPath.js +19 -0
- data/package/utils/defaultConfigPath.js +2 -0
- data/package/utils/get_style_rule.js +5 -2
- data/package/utils/helpers.js +24 -1
- data/package/utils/inliningCss.js +7 -0
- data/package/utils/snakeToCamelCase +7 -0
- data/package/webpackDevServerConfig.js +68 -0
- data/package.json +2 -2
- data/{webpacker.gemspec → shakapacker.gemspec} +3 -3
- data/spec/backward_compatibility_specs/command_spec_bc.rb +116 -0
- data/spec/backward_compatibility_specs/compiler_spec_bc.rb +59 -0
- data/spec/backward_compatibility_specs/compiler_strategy_spec_bc.rb +22 -0
- data/spec/backward_compatibility_specs/configuration_spec_bc.rb +286 -0
- data/spec/backward_compatibility_specs/dev_server_runner_spec_bc.rb +79 -0
- data/spec/backward_compatibility_specs/dev_server_spec_bc.rb +47 -0
- data/spec/backward_compatibility_specs/digest_strategy_spec_bc.rb +35 -0
- data/spec/backward_compatibility_specs/engine_rake_tasks_spec_bc.rb +44 -0
- data/spec/backward_compatibility_specs/env_spec_bc.rb +23 -0
- data/spec/backward_compatibility_specs/helper_spec_bc.rb +243 -0
- data/spec/backward_compatibility_specs/instance_spec_bc.rb +31 -0
- data/spec/backward_compatibility_specs/manifest_spec_bc.rb +100 -0
- data/spec/backward_compatibility_specs/mtime_strategy_spec_bc.rb +55 -0
- data/spec/backward_compatibility_specs/rake_tasks_spec_bc.rb +37 -0
- data/spec/backward_compatibility_specs/spec_helper_initializer.rb +24 -0
- data/spec/backward_compatibility_specs/webpack_runner_spec_bc.rb +56 -0
- data/spec/backward_compatibility_specs/webpacker_spec_bc.rb +41 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/.gitignore +2 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/Rakefile +3 -0
- data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/app/packs/entrypoints/application.js +1 -1
- data/{lib/install → spec/backward_compatibility_specs/webpacker_test_app}/bin/webpacker +0 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/config/application.rb +11 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/config/environment.rb +4 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/config/initializers/inspect_autoload_paths.rb +1 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/config/webpack/webpack.config.js +0 -0
- data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker.yml +1 -1
- data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker_css_extract_ignore_order_warnings.yml +1 -1
- data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker_defaults_fallback.yml +1 -1
- data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_no_precompile.yml +7 -0
- data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker_other_location.yml +1 -1
- data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker_public_root.yml +1 -1
- data/spec/backward_compatibility_specs/webpacker_test_app/config.ru +5 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/package.json +13 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/public/packs/manifest.json +58 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/some.config.js +0 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/tmp/shakapacker/last-compilation-digest-production +1 -0
- data/spec/backward_compatibility_specs/webpacker_test_app/yarn.lock +11 -0
- data/spec/command_spec.rb +18 -16
- data/spec/compiler_spec.rb +19 -17
- data/spec/compiler_strategy_spec.rb +9 -7
- data/spec/configuration_spec.rb +108 -66
- data/spec/dev_server_runner_spec.rb +9 -8
- data/spec/dev_server_spec.rb +97 -9
- data/spec/digest_strategy_spec.rb +4 -2
- data/spec/engine_rake_tasks_spec.rb +12 -16
- data/spec/env_spec.rb +7 -5
- data/spec/helper_spec.rb +4 -2
- data/spec/instance_spec.rb +31 -0
- data/spec/manifest_spec.rb +21 -19
- data/spec/mounted_app/test/dummy/config/application.rb +1 -1
- data/spec/mounted_app/test/dummy/config/webpacker.yml +3 -3
- data/spec/mtime_strategy_spec.rb +4 -2
- data/spec/rake_tasks_spec.rb +20 -18
- data/spec/spec_helper.rb +0 -25
- data/spec/spec_helper_initializer.rb +24 -0
- data/spec/test_app/.gitignore +2 -0
- data/spec/test_app/app/javascript/entrypoints/application.js +10 -0
- data/spec/test_app/app/javascript/entrypoints/generated/something.js +2 -0
- data/spec/test_app/app/javascript/entrypoints/multi_entry.css +4 -0
- data/spec/test_app/app/javascript/entrypoints/multi_entry.js +4 -0
- data/spec/test_app/bin/{webpacker-dev-server → shakapacker} +3 -3
- data/spec/test_app/bin/{webpacker → shakapacker-dev-server} +3 -3
- data/spec/test_app/config/application.rb +1 -1
- data/spec/test_app/config/shakapacker.yml +82 -0
- data/spec/test_app/config/shakapacker_css_extract_ignore_order_warnings.yml +84 -0
- data/spec/test_app/config/shakapacker_defaults_fallback.yml +11 -0
- data/spec/test_app/config/shakapacker_manifest_path.yml +80 -0
- data/spec/test_app/config/shakapacker_nested_entries.yml +83 -0
- data/spec/test_app/config/shakapacker_no_precompile.yml +7 -0
- data/spec/test_app/config/shakapacker_other_location.yml +85 -0
- data/spec/test_app/config/shakapacker_public_root.yml +18 -0
- data/spec/version_checker_spec.rb +16 -15
- data/spec/webpack_runner_spec.rb +4 -3
- data/spec/webpacker_spec.rb +9 -29
- metadata +119 -44
- data/config/webpacker.yml +0 -1
- data/lib/webpacker/railtie.rb +0 -70
- data/lib/webpacker/runner.rb +0 -23
- data/package/configPath.js +0 -3
- data/package/inliningCss.js +0 -7
- data/spec/test_app/config/webpacker_no_precompile.yml +0 -7
- /data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/app/packs/entrypoints/generated/something.js +0 -0
- /data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/app/packs/entrypoints/multi_entry.css +0 -0
- /data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/app/packs/entrypoints/multi_entry.js +0 -0
- /data/{lib/install → spec/backward_compatibility_specs/webpacker_test_app}/bin/webpacker-dev-server +0 -0
- /data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker_manifest_path.yml +0 -0
- /data/spec/{test_app → backward_compatibility_specs/webpacker_test_app}/config/webpacker_nested_entries.yml +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
tasks = {
|
|
2
|
+
"shakapacker:info" => "Provides information on Shakapacker's environment",
|
|
3
|
+
"shakapacker:install" => "Installs and setup webpack with Yarn",
|
|
4
|
+
"shakapacker:compile" => "Compiles webpack bundles based on environment",
|
|
5
|
+
"shakapacker:clean" => "Remove old compiled bundles",
|
|
6
|
+
"shakapacker:clobber" => "Removes the webpack compiled output directory",
|
|
7
|
+
"shakapacker:check_node" => "Verifies if Node.js is installed",
|
|
8
|
+
"shakapacker:check_yarn" => "Verifies if Yarn is installed",
|
|
9
|
+
"shakapacker:check_binstubs" => "Verifies that bin/shakapacker is present",
|
|
10
|
+
"shakapacker:binstubs" => "Installs Shakapacker binstubs in this application",
|
|
11
|
+
"shakapacker:verify_install" => "Verifies if Shakapacker is installed",
|
|
12
|
+
}.freeze
|
|
13
|
+
|
|
14
|
+
desc "Lists all available tasks in Shakapacker"
|
|
15
|
+
task :shakapacker do
|
|
16
|
+
puts "Available Shakapacker tasks are:"
|
|
17
|
+
tasks.each { |task, message| puts task.ljust(30) + message }
|
|
18
|
+
end
|
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
binstubs_template_path = File.expand_path("../../install/binstubs.rb", __dir__).freeze
|
|
2
|
-
bin_path = ENV["BUNDLE_BIN"] || Rails.root.join("bin")
|
|
3
|
-
|
|
4
1
|
namespace :webpacker do
|
|
5
|
-
desc "Installs
|
|
6
|
-
task binstubs
|
|
7
|
-
|
|
2
|
+
desc "DEPRECATED - Installs Shakapacker binstubs in this application"
|
|
3
|
+
task :binstubs do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
else
|
|
12
|
-
exec "#{RbConfig.ruby} #{bin_path}/rake #{prefix}rails:template LOCATION='#{binstubs_template_path}'"
|
|
13
|
-
end
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:binstubs"].invoke
|
|
14
8
|
end
|
|
15
9
|
end
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
namespace :webpacker do
|
|
2
|
-
desc "Verifies that bin/
|
|
3
|
-
task :check_binstubs do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"Exiting!"
|
|
9
|
-
exit!
|
|
10
|
-
end
|
|
2
|
+
desc "DEPRECATED - Verifies that bin/shakapacker is present"
|
|
3
|
+
task :check_binstubs do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
5
|
+
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:check_binstubs"].invoke
|
|
11
8
|
end
|
|
12
9
|
end
|
|
@@ -1,31 +1,9 @@
|
|
|
1
|
-
require "semantic_range"
|
|
2
1
|
namespace :webpacker do
|
|
3
|
-
desc "Verifies if Node.js is installed"
|
|
4
|
-
task :check_node do
|
|
5
|
-
|
|
6
|
-
node_version = `node -v || nodejs -v`.strip
|
|
7
|
-
raise Errno::ENOENT if node_version.blank?
|
|
2
|
+
desc "DEPRECATED - Verifies if Node.js is installed"
|
|
3
|
+
task :check_node do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
is_valid = SemanticRange.satisfies?(node_version, node_range) rescue false
|
|
12
|
-
semver_major = node_version[/\d+/] rescue nil
|
|
13
|
-
is_unstable = semver_major.to_i.odd? rescue false
|
|
14
|
-
|
|
15
|
-
if is_unstable
|
|
16
|
-
$stderr.puts "Warning: you are using an unstable release of Node.js (#{node_version}). If you encounter issues with Node.js, consider switching to an Active LTS release. More info: https://docs.npmjs.com/try-the-latest-stable-version-of-node"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
unless is_valid
|
|
20
|
-
$stderr.puts "Webpacker requires Node.js \"#{node_range}\" and you are using #{node_version}"
|
|
21
|
-
$stderr.puts "Please upgrade Node.js https://nodejs.org/en/download/"
|
|
22
|
-
$stderr.puts "Exiting!"
|
|
23
|
-
exit!
|
|
24
|
-
end
|
|
25
|
-
rescue Errno::ENOENT
|
|
26
|
-
$stderr.puts "Node.js not installed. Please download and install Node.js https://nodejs.org/en/download/"
|
|
27
|
-
$stderr.puts "Exiting!"
|
|
28
|
-
exit!
|
|
29
|
-
end
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:check_node"].invoke
|
|
30
8
|
end
|
|
31
9
|
end
|
|
@@ -1,33 +1,9 @@
|
|
|
1
|
-
require "semantic_range"
|
|
2
1
|
namespace :webpacker do
|
|
3
|
-
desc "Verifies if Yarn is installed"
|
|
4
|
-
task :check_yarn do
|
|
5
|
-
|
|
6
|
-
which_command = Gem.win_platform? ? "where" : "which"
|
|
7
|
-
raise Errno::ENOENT if `#{which_command} yarn`.strip.empty?
|
|
2
|
+
desc "DEPRECATED - Verifies if Yarn is installed"
|
|
3
|
+
task :check_yarn do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
pkg_path = Pathname.new("#{__dir__}/../../../package.json").realpath
|
|
13
|
-
yarn_range = JSON.parse(pkg_path.read)["engines"]["yarn"]
|
|
14
|
-
is_valid = SemanticRange.satisfies?(yarn_version, yarn_range) rescue false
|
|
15
|
-
is_unsupported = SemanticRange.satisfies?(yarn_version, ">=4.0.0") rescue false
|
|
16
|
-
|
|
17
|
-
unless is_valid
|
|
18
|
-
$stderr.puts "Webpacker requires Yarn \"#{yarn_range}\" and you are using #{yarn_version}"
|
|
19
|
-
if is_unsupported
|
|
20
|
-
$stderr.puts "This version of Webpacker does not support Yarn #{yarn_version}. Please downgrade to a supported version of Yarn https://yarnpkg.com/lang/en/docs/install/"
|
|
21
|
-
else
|
|
22
|
-
$stderr.puts "Please upgrade Yarn https://yarnpkg.com/lang/en/docs/install/"
|
|
23
|
-
end
|
|
24
|
-
$stderr.puts "Exiting!"
|
|
25
|
-
exit!
|
|
26
|
-
end
|
|
27
|
-
rescue Errno::ENOENT
|
|
28
|
-
$stderr.puts "Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/"
|
|
29
|
-
$stderr.puts "Exiting!"
|
|
30
|
-
exit!
|
|
31
|
-
end
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:check_yarn"].invoke
|
|
32
8
|
end
|
|
33
9
|
end
|
|
@@ -1,23 +1,9 @@
|
|
|
1
|
-
$stdout.sync = true
|
|
2
|
-
|
|
3
|
-
require "webpacker/configuration"
|
|
4
|
-
|
|
5
1
|
namespace :webpacker do
|
|
6
|
-
desc "Remove old compiled
|
|
7
|
-
task :clean, [:keep, :age]
|
|
8
|
-
|
|
9
|
-
Webpacker.clean(Integer(args.keep || 2), Integer(args.age || 3600))
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
2
|
+
desc "DEPRECATED - Remove old compiled bundles"
|
|
3
|
+
task :clean, [:keep, :age] do |task, args|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
13
5
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if Rake::Task.task_defined?("assets:clean")
|
|
17
|
-
Rake::Task["assets:clean"].enhance do
|
|
18
|
-
Rake::Task["webpacker:clean"].invoke
|
|
19
|
-
end
|
|
20
|
-
else
|
|
21
|
-
Rake::Task.define_task("assets:clean" => "webpacker:clean")
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:clean"].invoke(args.keep, args.age)
|
|
22
8
|
end
|
|
23
9
|
end
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
require "
|
|
1
|
+
require "shakapacker/configuration"
|
|
2
2
|
|
|
3
3
|
namespace :webpacker do
|
|
4
|
-
desc "Remove the webpack compiled output directory"
|
|
5
|
-
task clobber
|
|
6
|
-
|
|
7
|
-
$stdout.puts "Removed webpack output path directory #{Webpacker.config.public_output_path}"
|
|
8
|
-
end
|
|
9
|
-
end
|
|
4
|
+
desc "DEPRECATED - Remove the webpack compiled output directory"
|
|
5
|
+
task :clobber do |task|
|
|
6
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if Rake::Task.task_defined?("assets:clobber")
|
|
14
|
-
Rake::Task["assets:clobber"].enhance do
|
|
15
|
-
Rake::Task["webpacker:clobber"].invoke
|
|
16
|
-
end
|
|
8
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
9
|
+
Rake::Task["#{prefix}shakapacker:clobber"].invoke
|
|
17
10
|
end
|
|
18
11
|
end
|
|
@@ -1,37 +1,9 @@
|
|
|
1
|
-
$stdout.sync = true
|
|
2
|
-
|
|
3
|
-
def enhance_assets_precompile
|
|
4
|
-
Rake::Task["assets:precompile"].enhance do |task|
|
|
5
|
-
prefix = task.name.split(/#|assets:precompile/).first
|
|
6
|
-
|
|
7
|
-
Rake::Task["#{prefix}webpacker:compile"].invoke
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
1
|
namespace :webpacker do
|
|
12
|
-
desc "Compile JavaScript packs using webpack for production with digests"
|
|
13
|
-
task compile
|
|
14
|
-
|
|
15
|
-
Webpacker.ensure_log_goes_to_stdout do
|
|
16
|
-
if Webpacker.compile
|
|
17
|
-
# Successful compilation!
|
|
18
|
-
else
|
|
19
|
-
# Failed compilation
|
|
20
|
-
exit!
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
2
|
+
desc "DEPRECATED - Compile JavaScript packs using webpack for production with digests"
|
|
3
|
+
task :compile do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
26
5
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# Rails already adds `yarn install` after 5.2
|
|
30
|
-
# https://github.com/shakacode/shakapacker/issues/237
|
|
31
|
-
enhance_assets_precompile
|
|
32
|
-
else
|
|
33
|
-
# Only add `yarn install` if Rails was not doing it (precompile was not defined).
|
|
34
|
-
# TODO: Remove this in Shakapacker 7.0
|
|
35
|
-
Rake::Task.define_task("assets:precompile" => ["webpacker:yarn_install", "webpacker:compile"])
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:compile"].invoke
|
|
36
8
|
end
|
|
37
9
|
end
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
require "webpacker/version"
|
|
2
|
-
|
|
3
1
|
namespace :webpacker do
|
|
4
|
-
desc "Provide information on
|
|
5
|
-
task :info do
|
|
6
|
-
|
|
7
|
-
$stdout.puts "Ruby: #{`ruby --version`}"
|
|
8
|
-
$stdout.puts "Rails: #{Rails.version}"
|
|
9
|
-
$stdout.puts "Webpacker: #{Webpacker::VERSION}"
|
|
10
|
-
$stdout.puts "Node: #{`node --version`}"
|
|
11
|
-
$stdout.puts "Yarn: #{`yarn --version`}"
|
|
12
|
-
|
|
13
|
-
$stdout.puts "\n"
|
|
14
|
-
$stdout.puts "shakapacker: \n#{`npm list shakapacker version`}"
|
|
2
|
+
desc "DEPRECATED - Provide information on Shakapacker's environment"
|
|
3
|
+
task :info do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
15
5
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
$stdout.puts "Is bin/yarn present?: #{File.exist? 'bin/yarn'}"
|
|
19
|
-
end
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:info"].invoke
|
|
20
8
|
end
|
|
21
9
|
end
|
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
install_template_path = File.expand_path("../../install/template.rb", __dir__).freeze
|
|
2
|
-
bin_path = ENV["BUNDLE_BIN"] || Rails.root.join("bin")
|
|
3
|
-
|
|
4
1
|
namespace :webpacker do
|
|
5
|
-
desc "Install
|
|
6
|
-
task install
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
prefix = task.name.split(/#|webpacker:install/).first
|
|
2
|
+
desc "DEPRECATED - Install Shakapacker in this application"
|
|
3
|
+
task :install do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
else
|
|
14
|
-
exec "#{RbConfig.ruby} #{bin_path}/rake #{prefix}rails:template LOCATION='#{install_template_path}'"
|
|
15
|
-
end
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:install"].invoke
|
|
16
8
|
end
|
|
17
9
|
end
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
require "webpacker/configuration"
|
|
2
|
-
|
|
3
1
|
namespace :webpacker do
|
|
4
|
-
desc "Verifies if the
|
|
5
|
-
task :verify_config do
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"running dependent tasks"
|
|
11
|
-
exit!
|
|
12
|
-
end
|
|
2
|
+
desc "DEPRECATED - Verifies if the Shakapacker config is present"
|
|
3
|
+
task :verify_config do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
5
|
+
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:verify_config"].invoke
|
|
13
8
|
end
|
|
14
9
|
end
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
namespace :webpacker do
|
|
2
|
-
desc "Verifies if
|
|
3
|
-
task verify_install
|
|
2
|
+
desc "DEPRECATED - Verifies if Shakapacker is installed"
|
|
3
|
+
task :verify_install do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
5
|
+
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:verify_install"].invoke
|
|
8
|
+
end
|
|
4
9
|
end
|
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
namespace :webpacker do
|
|
2
|
-
desc "Support for older Rails versions. Install all JavaScript dependencies as specified via Yarn"
|
|
3
|
-
task :yarn_install do
|
|
4
|
-
|
|
5
|
-
Shakapacker - Automatic installation of yarn packages is deprecated
|
|
6
|
-
Automatic installation of yarn packages when assets are precompiled is deprecated and will be removed in Shakapacker v7.
|
|
7
|
-
Please ensure you are installing yarn packages explicitly before the asset compilation.
|
|
8
|
-
MSG
|
|
2
|
+
desc "DEPRECATED - Support for older Rails versions. Install all JavaScript dependencies as specified via Yarn"
|
|
3
|
+
task :yarn_install do |task|
|
|
4
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
9
5
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
valid_node_envs.include?(Rails.env) ? Rails.env : "production"
|
|
13
|
-
end
|
|
14
|
-
Dir.chdir(Rails.root) do
|
|
15
|
-
yarn_flags =
|
|
16
|
-
if `yarn --version`.start_with?("1")
|
|
17
|
-
"--no-progress --frozen-lockfile"
|
|
18
|
-
else
|
|
19
|
-
"--immutable"
|
|
20
|
-
end
|
|
21
|
-
system({ "NODE_ENV" => node_env }, "yarn install #{yarn_flags}")
|
|
22
|
-
end
|
|
6
|
+
prefix = task.name.split(/#|webpacker:/).first
|
|
7
|
+
Rake::Task["#{prefix}shakapacker:yarn_install"].invoke
|
|
23
8
|
end
|
|
24
9
|
end
|
data/lib/tasks/webpacker.rake
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
tasks = {
|
|
2
|
-
"webpacker:info" => "Provides information on
|
|
3
|
-
"webpacker:install" => "Installs and setup webpack with Yarn",
|
|
4
|
-
"webpacker:compile" => "Compiles webpack bundles based on environment",
|
|
5
|
-
"webpacker:clean" => "Remove old compiled
|
|
6
|
-
"webpacker:clobber" => "Removes the webpack compiled output directory",
|
|
7
|
-
"webpacker:check_node" => "Verifies if Node.js is installed",
|
|
8
|
-
"webpacker:check_yarn" => "Verifies if Yarn is installed",
|
|
9
|
-
"webpacker:check_binstubs" => "Verifies that bin/
|
|
10
|
-
"webpacker:binstubs" => "Installs
|
|
11
|
-
"webpacker:verify_install" => "Verifies if
|
|
2
|
+
"webpacker:info" => "DEPRECATED - Provides information on Shakapacker's environment",
|
|
3
|
+
"webpacker:install" => "DEPRECATED - Installs and setup webpack with Yarn",
|
|
4
|
+
"webpacker:compile" => "DEPRECATED - Compiles webpack bundles based on environment",
|
|
5
|
+
"webpacker:clean" => "DEPRECATED - Remove old compiled bundles",
|
|
6
|
+
"webpacker:clobber" => "DEPRECATED - Removes the webpack compiled output directory",
|
|
7
|
+
"webpacker:check_node" => "DEPRECATED - Verifies if Node.js is installed",
|
|
8
|
+
"webpacker:check_yarn" => "DEPRECATED - Verifies if Yarn is installed",
|
|
9
|
+
"webpacker:check_binstubs" => "DEPRECATED - Verifies that bin/shakapacker is present",
|
|
10
|
+
"webpacker:binstubs" => "DEPRECATED - Installs Shakapacker binstubs in this application",
|
|
11
|
+
"webpacker:verify_install" => "DEPRECATED - Verifies if Shakapacker is installed",
|
|
12
12
|
}.freeze
|
|
13
13
|
|
|
14
|
-
desc "Lists all available tasks in Webpacker"
|
|
15
|
-
task :webpacker do
|
|
16
|
-
puts "Available Webpacker tasks are:"
|
|
14
|
+
desc "DEPRECATED - Lists all available tasks in Webpacker"
|
|
15
|
+
task :webpacker do |task|
|
|
16
|
+
puts "DEPRECATED - Available Webpacker tasks are:"
|
|
17
17
|
tasks.each { |task, message| puts task.ljust(30) + message }
|
|
18
|
+
|
|
19
|
+
Shakapacker.puts_rake_deprecation_message(task.name)
|
|
18
20
|
end
|
|
@@ -1,96 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
require "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
load_config
|
|
11
|
-
detect_unsupported_switches!
|
|
12
|
-
detect_port!
|
|
13
|
-
execute_cmd
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
def load_config
|
|
19
|
-
app_root = Pathname.new(@app_path)
|
|
20
|
-
|
|
21
|
-
@config = Configuration.new(
|
|
22
|
-
root_path: app_root,
|
|
23
|
-
config_path: Pathname.new(@webpacker_config),
|
|
24
|
-
env: ENV["RAILS_ENV"]
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
dev_server = DevServer.new(@config)
|
|
28
|
-
|
|
29
|
-
@hostname = dev_server.host
|
|
30
|
-
@port = dev_server.port
|
|
31
|
-
@pretty = dev_server.pretty?
|
|
32
|
-
@https = dev_server.https?
|
|
33
|
-
@hot = dev_server.hmr?
|
|
34
|
-
|
|
35
|
-
rescue Errno::ENOENT, NoMethodError
|
|
36
|
-
$stdout.puts "webpack dev_server configuration not found in #{@config.config_path}[#{ENV["RAILS_ENV"]}]."
|
|
37
|
-
$stdout.puts "Please run bundle exec rails webpacker:install to install Webpacker"
|
|
38
|
-
exit!
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
UNSUPPORTED_SWITCHES = %w[--host --port]
|
|
42
|
-
private_constant :UNSUPPORTED_SWITCHES
|
|
43
|
-
def detect_unsupported_switches!
|
|
44
|
-
unsupported_switches = UNSUPPORTED_SWITCHES & @argv
|
|
45
|
-
if unsupported_switches.any?
|
|
46
|
-
$stdout.puts "The following CLI switches are not supported by Webpacker: #{unsupported_switches.join(' ')}. Please edit your command and try again."
|
|
47
|
-
exit!
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
if @argv.include?("--https") && !@https
|
|
51
|
-
$stdout.puts "Please set https: true in webpacker.yml to use the --https command line flag."
|
|
52
|
-
exit!
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def detect_port!
|
|
57
|
-
server = TCPServer.new(@hostname, @port)
|
|
58
|
-
server.close
|
|
59
|
-
|
|
60
|
-
rescue Errno::EADDRINUSE
|
|
61
|
-
$stdout.puts "Another program is running on port #{@port}. Set a new port in #{@config.config_path} for dev_server"
|
|
62
|
-
exit!
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def execute_cmd
|
|
66
|
-
env = Webpacker::Compiler.env
|
|
67
|
-
env["WEBPACKER_CONFIG"] = @webpacker_config
|
|
68
|
-
env["WEBPACK_SERVE"] = "true"
|
|
69
|
-
|
|
70
|
-
cmd = if node_modules_bin_exist?
|
|
71
|
-
["#{@node_modules_bin_path}/webpack", "serve"]
|
|
72
|
-
else
|
|
73
|
-
["yarn", "webpack", "serve"]
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
if @argv.include?("--debug-webpacker")
|
|
77
|
-
cmd = [ "node", "--inspect-brk", "--trace-warnings" ] + cmd
|
|
78
|
-
@argv.delete "--debug-webpacker"
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
cmd += ["--config", @webpack_config]
|
|
82
|
-
cmd += ["--progress", "--color"] if @pretty
|
|
83
|
-
|
|
84
|
-
cmd += ["--hot"] if @hot
|
|
85
|
-
cmd += @argv
|
|
86
|
-
|
|
87
|
-
Dir.chdir(@app_path) do
|
|
88
|
-
Kernel.exec env, *cmd
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def node_modules_bin_exist?
|
|
93
|
-
File.exist?("#{@node_modules_bin_path}/webpack-dev-server")
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
|
1
|
+
# This file exists for backward compatibility
|
|
2
|
+
require "shakapacker/dev_server_runner"
|
|
3
|
+
|
|
4
|
+
Shakapacker.puts_deprecation_message(
|
|
5
|
+
Shakapacker.short_deprecation_message(
|
|
6
|
+
"bin/webpacker-dev-server",
|
|
7
|
+
"bin/shakapacker-dev-server"
|
|
8
|
+
)
|
|
9
|
+
)
|
|
@@ -1,58 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
require "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"-h",
|
|
11
|
-
"version",
|
|
12
|
-
"v",
|
|
13
|
-
"--version",
|
|
14
|
-
"-v",
|
|
15
|
-
"info",
|
|
16
|
-
"i"
|
|
17
|
-
].freeze
|
|
18
|
-
|
|
19
|
-
def run
|
|
20
|
-
env = Webpacker::Compiler.env
|
|
21
|
-
env["WEBPACKER_CONFIG"] = @webpacker_config
|
|
22
|
-
|
|
23
|
-
cmd = if node_modules_bin_exist?
|
|
24
|
-
["#{@node_modules_bin_path}/webpack"]
|
|
25
|
-
else
|
|
26
|
-
["yarn", "webpack"]
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
if @argv.delete "--debug-webpacker"
|
|
30
|
-
cmd = ["node", "--inspect-brk"] + cmd
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
if @argv.delete "--trace-deprecation"
|
|
34
|
-
cmd = ["node", "--trace-deprecation"] + cmd
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
if @argv.delete "--no-deprecation"
|
|
38
|
-
cmd = ["node", "--no-deprecation"] + cmd
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Webpack commands are not compatible with --config option.
|
|
42
|
-
if (@argv & WEBPACK_COMMANDS).empty?
|
|
43
|
-
cmd += ["--config", @webpack_config]
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
cmd += @argv
|
|
47
|
-
|
|
48
|
-
Dir.chdir(@app_path) do
|
|
49
|
-
Kernel.exec env, *cmd
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
def node_modules_bin_exist?
|
|
55
|
-
File.exist?("#{@node_modules_bin_path}/webpack")
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
1
|
+
# This file exists for backward compatibility
|
|
2
|
+
require "shakapacker/webpack_runner"
|
|
3
|
+
|
|
4
|
+
Shakapacker.puts_deprecation_message(
|
|
5
|
+
Shakapacker.short_deprecation_message(
|
|
6
|
+
"bin/webpacker",
|
|
7
|
+
"bin/shakapacker"
|
|
8
|
+
)
|
|
9
|
+
)
|
data/lib/webpacker.rb
CHANGED
|
@@ -1,48 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require "
|
|
3
|
-
require "active_support/logger"
|
|
4
|
-
require "active_support/tagged_logging"
|
|
1
|
+
# This file exists for backward compatibility
|
|
2
|
+
require "shakapacker"
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
extend self
|
|
8
|
-
|
|
9
|
-
DEFAULT_ENV = "production".freeze
|
|
10
|
-
|
|
11
|
-
def instance=(instance)
|
|
12
|
-
@instance = instance
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def instance
|
|
16
|
-
@instance ||= Webpacker::Instance.new
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def with_node_env(env)
|
|
20
|
-
original = ENV["NODE_ENV"]
|
|
21
|
-
ENV["NODE_ENV"] = env
|
|
22
|
-
yield
|
|
23
|
-
ensure
|
|
24
|
-
ENV["NODE_ENV"] = original
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def ensure_log_goes_to_stdout
|
|
28
|
-
old_logger = Webpacker.logger
|
|
29
|
-
Webpacker.logger = Logger.new(STDOUT)
|
|
30
|
-
yield
|
|
31
|
-
ensure
|
|
32
|
-
Webpacker.logger = old_logger
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
delegate :logger, :logger=, :env, :inlining_css?, to: :instance
|
|
36
|
-
delegate :config, :compiler, :manifest, :commands, :dev_server, to: :instance
|
|
37
|
-
delegate :bootstrap, :clean, :clobber, :compile, to: :commands
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
require "webpacker/instance"
|
|
41
|
-
require "webpacker/env"
|
|
42
|
-
require "webpacker/configuration"
|
|
43
|
-
require "webpacker/manifest"
|
|
44
|
-
require "webpacker/compiler"
|
|
45
|
-
require "webpacker/commands"
|
|
46
|
-
require "webpacker/dev_server"
|
|
47
|
-
|
|
48
|
-
require "webpacker/railtie" if defined?(Rails)
|
|
4
|
+
Shakapacker.puts_deprecation_message(Shakapacker::DEPRECATION_MESSAGE)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* global test expect, describe */
|
|
2
|
+
const { resolve } = require('path')
|
|
3
|
+
const { chdirWebpackerTestApp, resetEnv } = require('../utils/helpers')
|
|
4
|
+
|
|
5
|
+
const rootPath = process.cwd()
|
|
6
|
+
chdirWebpackerTestApp()
|
|
7
|
+
|
|
8
|
+
const config = require('../config')
|
|
9
|
+
|
|
10
|
+
describe('Backward Compatibility - Config', () => {
|
|
11
|
+
beforeEach(() => jest.resetModules() && resetEnv())
|
|
12
|
+
afterAll(() => process.chdir(rootPath))
|
|
13
|
+
|
|
14
|
+
test('x public path with asset host', () => {
|
|
15
|
+
process.env.RAILS_ENV = 'development'
|
|
16
|
+
process.env.WEBPACKER_ASSET_HOST = 'http://foo.com/'
|
|
17
|
+
const config = require('../config')
|
|
18
|
+
|
|
19
|
+
expect(config.publicPath).toEqual('http://foo.com/packs/')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('x should allow overriding manifestPath', () => {
|
|
23
|
+
process.env.WEBPACKER_CONFIG = 'config/webpacker_manifest_path.yml'
|
|
24
|
+
const config = require('../config')
|
|
25
|
+
expect(config.manifestPath).toEqual(resolve('app/packs/manifest.json'))
|
|
26
|
+
})
|
|
27
|
+
})
|