webpacker 1.2 → 2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +93 -9
- data/Gemfile.lock +2 -2
- data/README.md +979 -93
- data/lib/install/angular.rb +2 -2
- data/lib/install/bin/webpack-dev-server.tt +20 -10
- data/lib/install/bin/webpack.tt +10 -15
- data/lib/install/config/.babelrc +13 -1
- data/lib/install/config/loaders/core/sass.js +3 -2
- data/lib/install/config/loaders/installers/elm.js +20 -0
- data/lib/install/config/loaders/installers/vue.js +1 -0
- data/lib/install/config/webpack/configuration.js +22 -13
- data/lib/install/config/webpack/development.js +17 -1
- data/lib/install/config/webpack/production.js +16 -2
- data/lib/install/config/webpack/shared.js +15 -11
- data/lib/install/config/{webpack/paths.yml → webpacker.yml} +12 -7
- data/lib/install/elm.rb +29 -0
- data/lib/install/examples/angular/tsconfig.json +1 -0
- data/lib/install/examples/elm/Main.elm +54 -0
- data/lib/install/examples/elm/hello_elm.js +11 -0
- data/lib/install/examples/vue/hello_vue.js +4 -8
- data/lib/install/react.rb +2 -2
- data/lib/install/template.rb +10 -11
- data/lib/install/vue.rb +2 -2
- data/lib/tasks/installers.rake +1 -0
- data/lib/tasks/webpacker.rake +11 -9
- data/lib/tasks/webpacker/check_webpack_binstubs.rake +11 -0
- data/lib/tasks/webpacker/check_yarn.rake +6 -3
- data/lib/tasks/webpacker/clobber.rake +3 -3
- data/lib/tasks/webpacker/compile.rake +14 -20
- data/lib/tasks/webpacker/verify_install.rake +2 -2
- data/lib/tasks/webpacker/yarn_install.rake +2 -2
- data/lib/webpacker.rb +16 -1
- data/lib/webpacker/compiler.rb +20 -0
- data/lib/webpacker/configuration.rb +30 -22
- data/lib/webpacker/env.rb +2 -6
- data/lib/webpacker/helper.rb +0 -2
- data/lib/webpacker/manifest.rb +23 -6
- data/lib/webpacker/version.rb +1 -1
- data/package.json +1 -1
- data/test/configuration_test.rb +32 -0
- data/test/env_test.rb +3 -5
- data/test/helper_test.rb +23 -0
- data/test/manifest_test.rb +30 -0
- data/test/test_app/config/secrets.yml +5 -0
- data/test/test_app/public/packs/manifest.json +4 -0
- data/test/webpacker_test.rb +2 -1
- metadata +20 -7
- data/lib/install/bin/yarn.tt +0 -11
- data/lib/install/config/webpack/development.server.js +0 -17
- data/lib/install/config/webpack/development.server.yml +0 -17
@@ -0,0 +1,11 @@
|
|
1
|
+
// Run this example by adding <%= javascript_pack_tag "hello_elm" %> to the head of your layout
|
2
|
+
// file, like app/views/layouts/application.html.erb. It will render "Hello Elm!" within the page.
|
3
|
+
|
4
|
+
import Elm from './Main'
|
5
|
+
|
6
|
+
document.addEventListener('DOMContentLoaded', () => {
|
7
|
+
const target = document.createElement('div')
|
8
|
+
|
9
|
+
document.body.appendChild(target)
|
10
|
+
Elm.Main.embed(target)
|
11
|
+
})
|
@@ -1,19 +1,15 @@
|
|
1
1
|
/* eslint no-console: 0 */
|
2
|
-
// Run this example by adding <%= javascript_pack_tag 'hello_vue' %>
|
3
|
-
// to the head of your layout file,
|
2
|
+
// Run this example by adding <%= javascript_pack_tag 'hello_vue' %> and
|
3
|
+
// <%= stylesheet_pack_tag 'hello_vue' %> to the head of your layout file,
|
4
4
|
// like app/views/layouts/application.html.erb.
|
5
5
|
// All it does is render <div>Hello Vue</div> at the bottom of the page.
|
6
6
|
|
7
|
-
import Vue from 'vue
|
7
|
+
import Vue from 'vue'
|
8
8
|
import App from './app.vue'
|
9
9
|
|
10
10
|
document.addEventListener('DOMContentLoaded', () => {
|
11
11
|
document.body.appendChild(document.createElement('hello'))
|
12
|
-
const app = new Vue(
|
13
|
-
el: 'hello',
|
14
|
-
template: '<App/>',
|
15
|
-
components: { App }
|
16
|
-
})
|
12
|
+
const app = new Vue(App).$mount('hello')
|
17
13
|
|
18
14
|
console.log(app)
|
19
15
|
})
|
data/lib/install/react.rb
CHANGED
@@ -19,13 +19,13 @@ else
|
|
19
19
|
copy_file "#{__dir__}/examples/react/.babelrc", ".babelrc"
|
20
20
|
end
|
21
21
|
|
22
|
-
puts "Copying react loader to
|
22
|
+
puts "Copying react loader to config/webpack/loaders"
|
23
23
|
copy_file "#{__dir__}/config/loaders/installers/react.js", "config/webpack/loaders/react.js"
|
24
24
|
|
25
25
|
puts "Copying react example entry file to #{Webpacker::Configuration.entry_path}"
|
26
26
|
copy_file "#{__dir__}/examples/react/hello_react.jsx", "#{Webpacker::Configuration.entry_path}/hello_react.jsx"
|
27
27
|
|
28
28
|
puts "Installing all react dependencies"
|
29
|
-
run "
|
29
|
+
run "yarn add react react-dom babel-preset-react prop-types"
|
30
30
|
|
31
31
|
puts "Webpacker now supports react.js 🎉"
|
data/lib/install/template.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# Install webpacker
|
2
|
+
copy_file "#{__dir__}/config/webpacker.yml", "config/webpacker.yml"
|
3
|
+
|
2
4
|
puts "Copying webpack core config and loaders"
|
3
5
|
directory "#{__dir__}/config/webpack", "config/webpack"
|
4
6
|
directory "#{__dir__}/config/loaders/core", "config/webpack/loaders"
|
7
|
+
|
8
|
+
puts "Copying .postcssrc.yml to app root directory"
|
5
9
|
copy_file "#{__dir__}/config/.postcssrc.yml", ".postcssrc.yml"
|
6
10
|
|
7
11
|
puts "Copying .babelrc to app root directory"
|
@@ -11,13 +15,7 @@ puts "Creating javascript app source directory"
|
|
11
15
|
directory "#{__dir__}/javascript", "#{Webpacker::Configuration.source}"
|
12
16
|
|
13
17
|
puts "Copying binstubs"
|
14
|
-
|
15
|
-
template "#{__dir__}/bin/webpack", "bin/webpack"
|
16
|
-
|
17
|
-
if !File.exist?("bin/yarn")
|
18
|
-
puts "Copying yarn"
|
19
|
-
template "#{__dir__}/bin/yarn", "bin/yarn"
|
20
|
-
end
|
18
|
+
directory "#{__dir__}/bin", "bin"
|
21
19
|
|
22
20
|
chmod "bin", 0755 & ~File.umask, verbose: false
|
23
21
|
|
@@ -29,13 +27,14 @@ EOS
|
|
29
27
|
end
|
30
28
|
|
31
29
|
puts "Installing all JavaScript dependencies"
|
32
|
-
run "
|
30
|
+
run "yarn add webpack webpack-merge js-yaml path-complete-extname " \
|
33
31
|
"webpack-manifest-plugin babel-loader@7.x coffee-loader coffee-script " \
|
34
|
-
"babel-core babel-preset-env compression-webpack-plugin rails-erb-loader glob " \
|
32
|
+
"babel-core babel-preset-env babel-polyfill compression-webpack-plugin rails-erb-loader glob " \
|
35
33
|
"extract-text-webpack-plugin node-sass file-loader sass-loader css-loader style-loader " \
|
36
|
-
"postcss-loader autoprefixer postcss-smart-import precss"
|
34
|
+
"postcss-loader autoprefixer postcss-smart-import precss resolve-url-loader " \
|
35
|
+
"babel-plugin-syntax-dynamic-import babel-plugin-transform-class-properties"
|
37
36
|
|
38
37
|
puts "Installing dev server for live reloading"
|
39
|
-
run "
|
38
|
+
run "yarn add --dev webpack-dev-server"
|
40
39
|
|
41
40
|
puts "Webpacker successfully installed 🎉 🍰"
|
data/lib/install/vue.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "webpacker/configuration"
|
2
2
|
|
3
|
-
puts "Copying vue loader to
|
3
|
+
puts "Copying vue loader to config/webpack/loaders"
|
4
4
|
copy_file "#{__dir__}/config/loaders/installers/vue.js", "config/webpack/loaders/vue.js"
|
5
5
|
|
6
6
|
puts "Copying the example entry file to #{Webpacker::Configuration.entry_path}"
|
@@ -10,6 +10,6 @@ puts "Copying vue app file to #{Webpacker::Configuration.entry_path}"
|
|
10
10
|
copy_file "#{__dir__}/examples/vue/app.vue", "#{Webpacker::Configuration.entry_path}/app.vue"
|
11
11
|
|
12
12
|
puts "Installing all vue dependencies"
|
13
|
-
run "
|
13
|
+
run "yarn add vue vue-loader vue-template-compiler"
|
14
14
|
|
15
15
|
puts "Webpacker now supports vue.js 🎉"
|
data/lib/tasks/installers.rake
CHANGED
data/lib/tasks/webpacker.rake
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
tasks = {
|
2
|
-
"webpacker:install"
|
3
|
-
"webpacker:compile"
|
4
|
-
"webpacker:check_node"
|
5
|
-
"webpacker:check_yarn"
|
6
|
-
"webpacker:
|
7
|
-
"webpacker:
|
8
|
-
"webpacker:
|
9
|
-
"webpacker:install:
|
10
|
-
"webpacker:install:
|
2
|
+
"webpacker:install" => "Installs and setup webpack with yarn",
|
3
|
+
"webpacker:compile" => "Compiles webpack bundles based on environment",
|
4
|
+
"webpacker:check_node" => "Verifies if Node.js is installed",
|
5
|
+
"webpacker:check_yarn" => "Verifies if yarn is installed",
|
6
|
+
"webpacker:check_webpack_binstubs" => "Verifies that bin/webpack & bin/webpack-dev-server are present",
|
7
|
+
"webpacker:verify_install" => "Verifies if webpacker is installed",
|
8
|
+
"webpacker:yarn_install" => "Support for older Rails versions. Install all JavaScript dependencies as specified via Yarn",
|
9
|
+
"webpacker:install:react" => "Installs and setup example React component",
|
10
|
+
"webpacker:install:vue" => "Installs and setup example Vue component",
|
11
|
+
"webpacker:install:angular" => "Installs and setup example Angular component",
|
12
|
+
"webpacker:install:elm" => "Installs and setup example Elm component"
|
11
13
|
}.freeze
|
12
14
|
|
13
15
|
desc "Lists all available tasks in webpacker"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
namespace :webpacker do
|
2
|
+
desc "Verifies that bin/webpack & bin/webpack-dev-server are present."
|
3
|
+
task :check_webpack_binstubs do
|
4
|
+
unless File.exist?("bin/webpack") && File.exist?("bin/webpack-dev-server")
|
5
|
+
puts "Webpack binstubs not found.\n"\
|
6
|
+
"Make sure the bin directory or binstubs are not included in .gitignore\n"\
|
7
|
+
"Exiting!"
|
8
|
+
exit!
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
namespace :webpacker do
|
2
2
|
desc "Verifies if yarn is installed"
|
3
3
|
task :check_yarn do
|
4
|
+
required_yarn_version = "0.20.1"
|
5
|
+
|
4
6
|
begin
|
5
|
-
|
6
|
-
|
7
|
+
yarn_version = `yarn --version`
|
8
|
+
|
9
|
+
raise Errno::ENOENT if yarn_version.blank? || Gem::Version.new(yarn_version) < Gem::Version.new(required_yarn_version)
|
7
10
|
rescue Errno::ENOENT
|
8
|
-
puts "Webpacker requires
|
11
|
+
puts "Webpacker requires Yarn version >= #{required_yarn_version}. Please download and install the latest version from https://yarnpkg.com/lang/en/docs/install/"
|
9
12
|
puts "Exiting!" && exit!
|
10
13
|
end
|
11
14
|
end
|
@@ -3,9 +3,9 @@ require "webpacker/configuration"
|
|
3
3
|
namespace :webpacker do
|
4
4
|
desc "Remove the webpack compiled output directory"
|
5
5
|
task clobber: ["webpacker:verify_install", :environment] do
|
6
|
-
|
7
|
-
FileUtils.rm_r(
|
8
|
-
puts "Removed webpack output path directory #{
|
6
|
+
output_path = Webpacker::Configuration.output_path
|
7
|
+
FileUtils.rm_r(output_path) if File.exist?(output_path)
|
8
|
+
puts "Removed webpack output path directory #{output_path}"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -1,35 +1,29 @@
|
|
1
|
+
require "open3"
|
1
2
|
require "webpacker/env"
|
2
3
|
require "webpacker/configuration"
|
3
|
-
REGEX_MAP = /\A.*\.map\z/
|
4
4
|
|
5
5
|
namespace :webpacker do
|
6
6
|
desc "Compile javascript packs using webpack for production with digests"
|
7
7
|
task compile: ["webpacker:verify_install", :environment] do
|
8
|
-
puts "Compiling
|
9
|
-
asset_host = Rails.application.config.action_controller.asset_host
|
10
|
-
result = `ASSET_HOST=#{asset_host} NODE_ENV=#{Webpacker::Env.current} ./bin/webpack --json`
|
8
|
+
puts "[Webpacker] Compiling assets 🎉"
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
exit! $?.exitstatus
|
15
|
-
end
|
10
|
+
asset_host = ActionController::Base.helpers.compute_asset_host
|
11
|
+
env = { "NODE_ENV" => Webpacker.env, "ASSET_HOST" => asset_host }.freeze
|
16
12
|
|
17
|
-
|
18
|
-
puts JSON.parse(File.read(Webpacker::Configuration.manifest_path))
|
19
|
-
end
|
13
|
+
stdout_str, stderr_str, status = Open3.capture3(env, "./bin/webpack")
|
20
14
|
|
21
|
-
|
22
|
-
|
23
|
-
|
15
|
+
if status.success?
|
16
|
+
$stdout.puts "\e[32m[Webpacker] Compiled digests for all packs in #{Webpacker::Configuration.entry_path}:\e[0m"
|
17
|
+
$stdout.puts "\e[32m#{JSON.parse(File.read(Webpacker::Configuration.manifest_path))}\e[0m"
|
18
|
+
else
|
19
|
+
$stdout.puts "[Webpacker] Compilation Failed"
|
20
|
+
$stdout.puts "\e[31m#{stdout_str}\e[0m"
|
21
|
+
$stderr.puts "\e[31m#{stderr_str}\e[0m"
|
22
|
+
exit!
|
23
|
+
end
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
# Compile packs prior to system and controller tests running
|
28
|
-
if Rake::Task.task_defined?("test:system")
|
29
|
-
Rake::Task["test:system"].enhance(["webpacker:compile_before_test"])
|
30
|
-
Rake::Task["test:controllers"].enhance(["webpacker:compile_before_test"])
|
31
|
-
end
|
32
|
-
|
33
27
|
# Compile packs after we've compiled all other assets during precompilation
|
34
28
|
if Rake::Task.task_defined?("assets:precompile")
|
35
29
|
Rake::Task["assets:precompile"].enhance do
|
@@ -2,12 +2,12 @@ require "webpacker/configuration"
|
|
2
2
|
|
3
3
|
namespace :webpacker do
|
4
4
|
desc "Verifies if webpacker is installed"
|
5
|
-
task verify_install: [:check_node, :check_yarn] do
|
5
|
+
task verify_install: [:check_node, :check_yarn, :check_webpack_binstubs] do
|
6
6
|
if File.exist?(Webpacker::Configuration.file_path)
|
7
7
|
puts "Webpacker is installed 🎉 🍰"
|
8
8
|
puts "Using #{Webpacker::Configuration.file_path} file for setting up webpack paths"
|
9
9
|
else
|
10
|
-
puts "Configuration config/
|
10
|
+
puts "Configuration config/webpacker.yml file not found. \n"\
|
11
11
|
"Make sure webpacker:install is run successfully before " \
|
12
12
|
"running dependent tasks"
|
13
13
|
exit!
|
@@ -1,6 +1,6 @@
|
|
1
1
|
namespace :webpacker do
|
2
2
|
desc "Support for older Rails versions.Install all JavaScript dependencies as specified via Yarn"
|
3
|
-
task :yarn_install do
|
4
|
-
system
|
3
|
+
task :yarn_install, [:arg1, :arg2] do |task, args|
|
4
|
+
system "yarn #{args[:arg1]} #{args[:arg2]}"
|
5
5
|
end
|
6
6
|
end
|
data/lib/webpacker.rb
CHANGED
@@ -1,9 +1,24 @@
|
|
1
1
|
module Webpacker
|
2
|
-
|
2
|
+
extend self
|
3
|
+
|
4
|
+
def bootstrap
|
3
5
|
Webpacker::Env.load
|
4
6
|
Webpacker::Configuration.load
|
5
7
|
Webpacker::Manifest.load
|
6
8
|
end
|
9
|
+
|
10
|
+
def compile
|
11
|
+
Webpacker::Compiler.compile
|
12
|
+
Webpacker::Manifest.load
|
13
|
+
end
|
14
|
+
|
15
|
+
def env
|
16
|
+
Webpacker::Env.current.inquiry
|
17
|
+
end
|
7
18
|
end
|
8
19
|
|
20
|
+
require "webpacker/env"
|
21
|
+
require "webpacker/configuration"
|
22
|
+
require "webpacker/manifest"
|
23
|
+
require "webpacker/compiler"
|
9
24
|
require "webpacker/railtie" if defined?(Rails)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "rake"
|
2
|
+
|
3
|
+
module Webpacker::Compiler
|
4
|
+
extend self
|
5
|
+
|
6
|
+
def compile
|
7
|
+
compile_task.invoke
|
8
|
+
compile_task.reenable
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def compile_task
|
13
|
+
@compile_task ||= load_rake_task("webpacker:compile")
|
14
|
+
end
|
15
|
+
|
16
|
+
def load_rake_task(name)
|
17
|
+
@load_rakefile ||= Rake.load_rakefile(Rails.root.join("Rakefile"))
|
18
|
+
Rake::Task[name]
|
19
|
+
end
|
20
|
+
end
|
@@ -1,51 +1,59 @@
|
|
1
|
-
# Loads webpacker configuration from config/
|
1
|
+
# Loads webpacker configuration from config/webpacker.yml
|
2
|
+
|
2
3
|
require "webpacker/file_loader"
|
3
|
-
require "webpacker/env"
|
4
4
|
|
5
5
|
class Webpacker::Configuration < Webpacker::FileLoader
|
6
6
|
class << self
|
7
|
-
def config_path
|
8
|
-
Rails.root.join(paths.fetch(:config, "config/webpack"))
|
9
|
-
end
|
10
|
-
|
11
7
|
def entry_path
|
12
|
-
|
8
|
+
source_path.join(fetch(:source_entry_path))
|
13
9
|
end
|
14
10
|
|
15
|
-
def
|
16
|
-
|
11
|
+
def output_path
|
12
|
+
public_path.join(fetch(:public_output_path))
|
17
13
|
end
|
18
14
|
|
19
15
|
def manifest_path
|
20
|
-
|
16
|
+
output_path.join("manifest.json")
|
21
17
|
end
|
22
18
|
|
23
|
-
def
|
24
|
-
Rails.root.join(
|
19
|
+
def source_path
|
20
|
+
Rails.root.join(source)
|
25
21
|
end
|
26
22
|
|
27
|
-
def
|
28
|
-
|
29
|
-
raise Webpacker::FileLoader::FileLoaderError.new("Webpacker::Configuration.load must be called first") unless instance
|
30
|
-
instance.data
|
23
|
+
def public_path
|
24
|
+
Rails.root.join("public")
|
31
25
|
end
|
32
26
|
|
33
|
-
def
|
34
|
-
|
27
|
+
def file_path(root: Rails.root)
|
28
|
+
root.join("config/webpacker.yml")
|
29
|
+
end
|
30
|
+
|
31
|
+
def default_file_path
|
32
|
+
file_path(root: Pathname.new(__dir__).join("../install"))
|
35
33
|
end
|
36
34
|
|
37
35
|
def source
|
38
|
-
|
36
|
+
fetch(:source_path)
|
39
37
|
end
|
40
38
|
|
41
|
-
def
|
42
|
-
|
39
|
+
def fetch(key)
|
40
|
+
data.fetch(key, defaults[key])
|
41
|
+
end
|
42
|
+
|
43
|
+
def data
|
44
|
+
load if Webpacker.env.development?
|
45
|
+
raise Webpacker::FileLoader::FileLoaderError.new("Webpacker::Configuration.load must be called first") unless instance
|
46
|
+
instance.data
|
47
|
+
end
|
48
|
+
|
49
|
+
def defaults
|
50
|
+
@defaults ||= HashWithIndifferentAccess.new(YAML.load(default_file_path.read)["default"])
|
43
51
|
end
|
44
52
|
end
|
45
53
|
|
46
54
|
private
|
47
55
|
def load
|
48
56
|
return super unless File.exist?(@path)
|
49
|
-
HashWithIndifferentAccess.new(YAML.load(File.read(@path))[Webpacker
|
57
|
+
HashWithIndifferentAccess.new(YAML.load(File.read(@path))[Webpacker.env])
|
50
58
|
end
|
51
59
|
end
|
data/lib/webpacker/env.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Singleton registry for determining NODE_ENV from config/
|
1
|
+
# Singleton registry for determining NODE_ENV from config/webpacker.yml
|
2
2
|
require "webpacker/file_loader"
|
3
3
|
|
4
4
|
class Webpacker::Env < Webpacker::FileLoader
|
@@ -8,12 +8,8 @@ class Webpacker::Env < Webpacker::FileLoader
|
|
8
8
|
instance.data
|
9
9
|
end
|
10
10
|
|
11
|
-
def development?
|
12
|
-
current == "development"
|
13
|
-
end
|
14
|
-
|
15
11
|
def file_path
|
16
|
-
Rails.root.join("config", "
|
12
|
+
Rails.root.join("config", "webpacker.yml")
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
data/lib/webpacker/helper.rb
CHANGED
data/lib/webpacker/manifest.rb
CHANGED
@@ -6,8 +6,6 @@
|
|
6
6
|
# "/packs/calendar-1016838bab065ae1e314.css" for long-term caching
|
7
7
|
|
8
8
|
require "webpacker/file_loader"
|
9
|
-
require "webpacker/env"
|
10
|
-
require "webpacker/configuration"
|
11
9
|
|
12
10
|
class Webpacker::Manifest < Webpacker::FileLoader
|
13
11
|
class << self
|
@@ -16,14 +14,33 @@ class Webpacker::Manifest < Webpacker::FileLoader
|
|
16
14
|
end
|
17
15
|
|
18
16
|
def lookup(name)
|
19
|
-
load if Webpacker
|
20
|
-
|
21
|
-
|
17
|
+
load if Webpacker.env.development?
|
18
|
+
|
19
|
+
if Webpacker.env.test?
|
20
|
+
find(name) || compile_and_find!(name)
|
21
|
+
else
|
22
|
+
find!(name)
|
23
|
+
end
|
22
24
|
end
|
23
25
|
|
24
26
|
def lookup_path(name)
|
25
|
-
Rails.root.join(File.join(Webpacker::Configuration.
|
27
|
+
Rails.root.join(File.join(Webpacker::Configuration.public_path, lookup(name)))
|
26
28
|
end
|
29
|
+
|
30
|
+
private
|
31
|
+
def find(name)
|
32
|
+
instance.data[name.to_s] if instance
|
33
|
+
end
|
34
|
+
|
35
|
+
def find!(name)
|
36
|
+
raise Webpacker::FileLoader::FileLoaderError.new("Webpacker::Manifest.load must be called first") unless instance
|
37
|
+
instance.data[name.to_s] || raise(Webpacker::FileLoader::NotFoundError.new("Can't find #{name} in #{file_path}. Is webpack still compiling?"))
|
38
|
+
end
|
39
|
+
|
40
|
+
def compile_and_find!(name)
|
41
|
+
Webpacker.compile
|
42
|
+
find!(name)
|
43
|
+
end
|
27
44
|
end
|
28
45
|
|
29
46
|
private
|