webpacker 2.0 → 3.0.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/.gitignore +2 -0
- data/.rubocop.yml +21 -21
- data/CHANGELOG.md +107 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +15 -8
- data/README.md +137 -937
- data/docs/assets.md +106 -0
- data/docs/css.md +82 -0
- data/docs/deployment.md +39 -0
- data/docs/env.md +62 -0
- data/docs/es6.md +53 -0
- data/docs/folder-structure.md +66 -0
- data/docs/misc.md +23 -0
- data/docs/props.md +105 -0
- data/docs/testing.md +45 -0
- data/docs/troubleshooting.md +65 -0
- data/docs/typescript.md +115 -0
- data/docs/webpack-dev-server.md +32 -0
- data/docs/webpack.md +108 -0
- data/docs/yarn.md +12 -0
- data/lib/install/angular.rb +4 -7
- data/lib/install/bin/webpack-dev-server.tt +35 -11
- data/lib/install/bin/webpack.tt +3 -4
- data/lib/install/config/.babelrc +1 -0
- data/lib/install/config/.postcssrc.yml +1 -2
- data/lib/install/config/webpack/development.js +2 -31
- data/lib/install/config/webpack/environment.js +3 -0
- data/lib/install/config/webpack/production.js +2 -34
- data/lib/install/config/webpack/test.js +2 -5
- data/lib/install/config/webpacker.yml +20 -2
- data/lib/install/elm.rb +6 -11
- data/lib/install/examples/vue/hello_vue.js +31 -2
- data/lib/install/react.rb +2 -5
- data/lib/install/template.rb +3 -8
- data/lib/install/vue.rb +4 -7
- data/lib/tasks/webpacker.rake +1 -1
- data/lib/tasks/webpacker/{check_webpack_binstubs.rake → check_binstubs.rake} +3 -2
- data/lib/tasks/webpacker/check_node.rake +8 -6
- data/lib/tasks/webpacker/check_yarn.rake +2 -2
- data/lib/tasks/webpacker/clobber.rake +2 -3
- data/lib/tasks/webpacker/compile.rake +16 -18
- data/lib/tasks/webpacker/verify_install.rake +5 -5
- data/lib/tasks/webpacker/yarn_install.rake +1 -1
- data/lib/webpacker.rb +15 -11
- data/lib/webpacker/commands.rb +22 -0
- data/lib/webpacker/compiler.rb +66 -10
- data/lib/webpacker/configuration.rb +54 -38
- data/lib/webpacker/dev_server.rb +47 -0
- data/lib/webpacker/dev_server_proxy.rb +24 -0
- data/lib/webpacker/helper.rb +23 -5
- data/lib/webpacker/instance.rb +44 -0
- data/lib/webpacker/manifest.rb +58 -34
- data/lib/webpacker/railtie.rb +22 -3
- data/lib/webpacker/version.rb +2 -1
- data/package.json +37 -7
- data/package/asset_host.js +21 -0
- data/package/config.js +8 -0
- data/package/environment.js +95 -0
- data/package/environments/development.js +47 -0
- data/package/environments/production.js +34 -0
- data/package/environments/test.js +3 -0
- data/package/index.js +16 -0
- data/package/loaders/babel.js +11 -0
- data/{lib/install/config/loaders/core → package/loaders}/coffee.js +0 -0
- data/{lib/install/config/loaders/installers → package/loaders}/elm.js +4 -5
- data/{lib/install/config/loaders/core → package/loaders}/erb.js +0 -0
- data/package/loaders/file.js +15 -0
- data/package/loaders/style.js +31 -0
- data/{lib/install/config/loaders/installers/angular.js → package/loaders/typescript.js} +1 -1
- data/package/loaders/vue.js +12 -0
- data/test/compiler_test.rb +20 -0
- data/test/configuration_test.rb +43 -19
- data/test/dev_server_test.rb +24 -0
- data/test/helper_test.rb +21 -5
- data/test/manifest_test.rb +25 -19
- data/test/test_app/public/packs/manifest.json +3 -1
- data/test/webpacker_test_helper.rb +40 -0
- data/webpacker.gemspec +1 -1
- data/yarn.lock +4701 -578
- metadata +52 -29
- data/lib/install/config/loaders/core/assets.js +0 -12
- data/lib/install/config/loaders/core/babel.js +0 -5
- data/lib/install/config/loaders/core/sass.js +0 -15
- data/lib/install/config/loaders/installers/react.js +0 -5
- data/lib/install/config/loaders/installers/vue.js +0 -13
- data/lib/install/config/webpack/configuration.js +0 -35
- data/lib/install/config/webpack/shared.js +0 -58
- data/lib/webpacker/env.rb +0 -23
- data/lib/webpacker/file_loader.rb +0 -24
- data/test/env_test.rb +0 -14
- data/test/webpacker_test.rb +0 -15
data/lib/install/bin/webpack.tt
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
$stdout.sync = true
|
3
3
|
|
4
4
|
require "shellwords"
|
5
|
-
require "yaml"
|
6
5
|
|
7
6
|
ENV["RAILS_ENV"] ||= "development"
|
8
7
|
RAILS_ENV = ENV["RAILS_ENV"]
|
@@ -20,9 +19,9 @@ unless File.exist?(WEBPACK_CONFIG)
|
|
20
19
|
exit!
|
21
20
|
end
|
22
21
|
|
23
|
-
|
24
|
-
|
22
|
+
env = { "NODE_PATH" => NODE_MODULES_PATH.shellescape }
|
23
|
+
cmd = [ "#{NODE_MODULES_PATH}/.bin/webpack", "--config", WEBPACK_CONFIG ] + ARGV
|
25
24
|
|
26
25
|
Dir.chdir(APP_PATH) do
|
27
|
-
exec
|
26
|
+
exec env, *cmd
|
28
27
|
end
|
data/lib/install/config/.babelrc
CHANGED
@@ -1,32 +1,3 @@
|
|
1
|
-
|
1
|
+
const environment = require('./environment')
|
2
2
|
|
3
|
-
|
4
|
-
const sharedConfig = require('./shared.js')
|
5
|
-
const { settings, output } = require('./configuration.js')
|
6
|
-
|
7
|
-
module.exports = merge(sharedConfig, {
|
8
|
-
devtool: 'cheap-eval-source-map',
|
9
|
-
|
10
|
-
stats: {
|
11
|
-
errorDetails: true
|
12
|
-
},
|
13
|
-
|
14
|
-
output: {
|
15
|
-
pathinfo: true
|
16
|
-
},
|
17
|
-
|
18
|
-
devServer: {
|
19
|
-
clientLogLevel: 'none',
|
20
|
-
https: settings.dev_server.https,
|
21
|
-
host: settings.dev_server.host,
|
22
|
-
port: settings.dev_server.port,
|
23
|
-
contentBase: output.path,
|
24
|
-
publicPath: output.publicPath,
|
25
|
-
compress: true,
|
26
|
-
headers: { 'Access-Control-Allow-Origin': '*' },
|
27
|
-
historyApiFallback: true,
|
28
|
-
watchOptions: {
|
29
|
-
ignored: /node_modules/
|
30
|
-
}
|
31
|
-
}
|
32
|
-
})
|
3
|
+
module.exports = environment.toWebpackConfig()
|
@@ -1,35 +1,3 @@
|
|
1
|
-
|
1
|
+
const environment = require('./environment')
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
const webpack = require('webpack')
|
6
|
-
const merge = require('webpack-merge')
|
7
|
-
const CompressionPlugin = require('compression-webpack-plugin')
|
8
|
-
const sharedConfig = require('./shared.js')
|
9
|
-
|
10
|
-
module.exports = merge(sharedConfig, {
|
11
|
-
output: { filename: '[name]-[chunkhash].js' },
|
12
|
-
devtool: 'source-map',
|
13
|
-
stats: 'normal',
|
14
|
-
|
15
|
-
plugins: [
|
16
|
-
new webpack.optimize.UglifyJsPlugin({
|
17
|
-
minimize: true,
|
18
|
-
sourceMap: true,
|
19
|
-
|
20
|
-
compress: {
|
21
|
-
warnings: false
|
22
|
-
},
|
23
|
-
|
24
|
-
output: {
|
25
|
-
comments: false
|
26
|
-
}
|
27
|
-
}),
|
28
|
-
|
29
|
-
new CompressionPlugin({
|
30
|
-
asset: '[path].gz[query]',
|
31
|
-
algorithm: 'gzip',
|
32
|
-
test: /\.(js|css|html|json|ico|svg|eot|otf|ttf)$/
|
33
|
-
})
|
34
|
-
]
|
35
|
-
})
|
3
|
+
module.exports = environment.toWebpackConfig()
|
@@ -1,6 +1,3 @@
|
|
1
|
-
|
1
|
+
const environment = require('./environment')
|
2
2
|
|
3
|
-
|
4
|
-
const sharedConfig = require('./shared.js')
|
5
|
-
|
6
|
-
module.exports = merge(sharedConfig, {})
|
3
|
+
module.exports = environment.toWebpackConfig()
|
@@ -4,6 +4,14 @@ default: &default
|
|
4
4
|
source_path: app/javascript
|
5
5
|
source_entry_path: packs
|
6
6
|
public_output_path: packs
|
7
|
+
cache_path: tmp/cache/webpacker
|
8
|
+
|
9
|
+
# Additional paths webpack should lookup modules
|
10
|
+
# ['app/assets', 'engine/foo/app/assets']
|
11
|
+
resolved_paths: []
|
12
|
+
|
13
|
+
# Reload manifest.json on all requests so we reload latest compiled packs
|
14
|
+
cache_manifest: false
|
7
15
|
|
8
16
|
extensions:
|
9
17
|
- .coffee
|
@@ -23,16 +31,26 @@ default: &default
|
|
23
31
|
|
24
32
|
development:
|
25
33
|
<<: *default
|
34
|
+
compile: true
|
26
35
|
|
27
36
|
dev_server:
|
28
|
-
host:
|
29
|
-
port:
|
37
|
+
host: localhost
|
38
|
+
port: 3035
|
39
|
+
hmr: false
|
30
40
|
https: false
|
31
41
|
|
32
42
|
test:
|
33
43
|
<<: *default
|
44
|
+
compile: true
|
34
45
|
|
46
|
+
# Compile test packs to a separate directory
|
35
47
|
public_output_path: packs-test
|
36
48
|
|
37
49
|
production:
|
38
50
|
<<: *default
|
51
|
+
|
52
|
+
# Production demands on precompilation of packs prior to booting for performance.
|
53
|
+
compile: false
|
54
|
+
|
55
|
+
# Cache manifest.json for performance
|
56
|
+
cache_manifest: true
|
data/lib/install/elm.rb
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
require "webpacker/configuration"
|
2
2
|
|
3
|
-
puts "Copying elm
|
4
|
-
copy_file "#{__dir__}/
|
5
|
-
"config/webpack/loaders/elm.js"
|
3
|
+
puts "Copying elm example entry file to #{Webpacker.config.source_entry_path}"
|
4
|
+
copy_file "#{__dir__}/examples/elm/Main.elm", "#{Webpacker.config.source_entry_path}/Main.elm"
|
6
5
|
|
7
|
-
puts "Copying elm
|
8
|
-
copy_file "#{__dir__}/examples/elm/Main.elm", "#{Webpacker::Configuration.entry_path}/Main.elm"
|
9
|
-
|
10
|
-
puts "Copying elm app file to #{Webpacker::Configuration.entry_path}"
|
6
|
+
puts "Copying elm app file to #{Webpacker.config.source_entry_path}"
|
11
7
|
copy_file "#{__dir__}/examples/elm/hello_elm.js",
|
12
|
-
"#{Webpacker
|
8
|
+
"#{Webpacker.config.source_entry_path}/hello_elm.js"
|
13
9
|
|
14
10
|
puts "Installing all elm dependencies"
|
15
11
|
run "yarn add elm elm-webpack-loader"
|
@@ -17,11 +13,10 @@ run "yarn add --dev elm-hot-loader"
|
|
17
13
|
run "yarn run elm package install -- --yes"
|
18
14
|
|
19
15
|
puts "Updating Webpack paths to include Elm file extension"
|
20
|
-
insert_into_file Webpacker
|
16
|
+
insert_into_file Webpacker.config.config_path, " - .elm\n", after: /extensions:\n/
|
21
17
|
|
22
18
|
puts "Updating elm source location"
|
23
|
-
|
24
|
-
gsub_file "elm-package.json", /\"\.\"\n/, %("#{source_path}"\n)
|
19
|
+
gsub_file "elm-package.json", /\"\.\"\n/, %("#{Webpacker.config.source_entry_path}"\n)
|
25
20
|
|
26
21
|
puts "Updating .gitignore to include elm-stuff folder"
|
27
22
|
insert_into_file ".gitignore", "/elm-stuff\n", before: "/node_modules\n"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* eslint no-console: 0 */
|
2
|
-
// Run this example by adding <%= javascript_pack_tag 'hello_vue' %> and
|
3
|
-
// <%= stylesheet_pack_tag 'hello_vue' %>
|
2
|
+
// Run this example by adding <%= javascript_pack_tag 'hello_vue' %> (and
|
3
|
+
// <%= stylesheet_pack_tag 'hello_vue' %> if you set extractStyles to true
|
4
|
+
// in config/webpack/loaders/vue.js) to the head of your layout file,
|
4
5
|
// like app/views/layouts/application.html.erb.
|
5
6
|
// All it does is render <div>Hello Vue</div> at the bottom of the page.
|
6
7
|
|
@@ -13,3 +14,31 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
13
14
|
|
14
15
|
console.log(app)
|
15
16
|
})
|
17
|
+
|
18
|
+
|
19
|
+
// The above code uses Vue without the compiler, which means you cannot
|
20
|
+
// use Vue to target elements in your existing html templates. You would
|
21
|
+
// need to always use single file components.
|
22
|
+
// To be able to target elements in your existing html/erb templates,
|
23
|
+
// comment out the above code and uncomment the below
|
24
|
+
// Add <%= javascript_pack_tag 'hello_vue' %> to your layout
|
25
|
+
// Then add this markup to your html template:
|
26
|
+
//
|
27
|
+
// <div id='hello'>
|
28
|
+
// {{message}}
|
29
|
+
// <app></app>
|
30
|
+
// </div>
|
31
|
+
|
32
|
+
|
33
|
+
// import Vue from 'vue/dist/vue.esm'
|
34
|
+
// import App from './app.vue'
|
35
|
+
//
|
36
|
+
// document.addEventListener('DOMContentLoaded', () => {
|
37
|
+
// const app = new Vue({
|
38
|
+
// el: '#hello',
|
39
|
+
// data: {
|
40
|
+
// message: "Can you say hello?"
|
41
|
+
// },
|
42
|
+
// components: { App }
|
43
|
+
// })
|
44
|
+
// })
|
data/lib/install/react.rb
CHANGED
@@ -19,11 +19,8 @@ else
|
|
19
19
|
copy_file "#{__dir__}/examples/react/.babelrc", ".babelrc"
|
20
20
|
end
|
21
21
|
|
22
|
-
puts "Copying react
|
23
|
-
copy_file "#{__dir__}/
|
24
|
-
|
25
|
-
puts "Copying react example entry file to #{Webpacker::Configuration.entry_path}"
|
26
|
-
copy_file "#{__dir__}/examples/react/hello_react.jsx", "#{Webpacker::Configuration.entry_path}/hello_react.jsx"
|
22
|
+
puts "Copying react example entry file to #{Webpacker.config.source_entry_path}"
|
23
|
+
copy_file "#{__dir__}/examples/react/hello_react.jsx", "#{Webpacker.config.source_entry_path}/hello_react.jsx"
|
27
24
|
|
28
25
|
puts "Installing all react dependencies"
|
29
26
|
run "yarn add react react-dom babel-preset-react prop-types"
|
data/lib/install/template.rb
CHANGED
@@ -3,7 +3,6 @@ copy_file "#{__dir__}/config/webpacker.yml", "config/webpacker.yml"
|
|
3
3
|
|
4
4
|
puts "Copying webpack core config and loaders"
|
5
5
|
directory "#{__dir__}/config/webpack", "config/webpack"
|
6
|
-
directory "#{__dir__}/config/loaders/core", "config/webpack/loaders"
|
7
6
|
|
8
7
|
puts "Copying .postcssrc.yml to app root directory"
|
9
8
|
copy_file "#{__dir__}/config/.postcssrc.yml", ".postcssrc.yml"
|
@@ -12,7 +11,7 @@ puts "Copying .babelrc to app root directory"
|
|
12
11
|
copy_file "#{__dir__}/config/.babelrc", ".babelrc"
|
13
12
|
|
14
13
|
puts "Creating javascript app source directory"
|
15
|
-
directory "#{__dir__}/javascript",
|
14
|
+
directory "#{__dir__}/javascript", Webpacker.config.source_path
|
16
15
|
|
17
16
|
puts "Copying binstubs"
|
18
17
|
directory "#{__dir__}/bin", "bin"
|
@@ -22,17 +21,13 @@ chmod "bin", 0755 & ~File.umask, verbose: false
|
|
22
21
|
if File.exists?(".gitignore")
|
23
22
|
append_to_file ".gitignore", <<-EOS
|
24
23
|
/public/packs
|
24
|
+
/public/packs-test
|
25
25
|
/node_modules
|
26
26
|
EOS
|
27
27
|
end
|
28
28
|
|
29
29
|
puts "Installing all JavaScript dependencies"
|
30
|
-
run "yarn add
|
31
|
-
"webpack-manifest-plugin babel-loader@7.x coffee-loader coffee-script " \
|
32
|
-
"babel-core babel-preset-env babel-polyfill compression-webpack-plugin rails-erb-loader glob " \
|
33
|
-
"extract-text-webpack-plugin node-sass file-loader sass-loader css-loader style-loader " \
|
34
|
-
"postcss-loader autoprefixer postcss-smart-import precss resolve-url-loader " \
|
35
|
-
"babel-plugin-syntax-dynamic-import babel-plugin-transform-class-properties"
|
30
|
+
run "yarn add @rails/webpacker"
|
36
31
|
|
37
32
|
puts "Installing dev server for live reloading"
|
38
33
|
run "yarn add --dev webpack-dev-server"
|
data/lib/install/vue.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
require "webpacker/configuration"
|
2
2
|
|
3
|
-
puts "Copying
|
4
|
-
copy_file "#{__dir__}/
|
3
|
+
puts "Copying the example entry file to #{Webpacker.config.source_entry_path}"
|
4
|
+
copy_file "#{__dir__}/examples/vue/hello_vue.js", "#{Webpacker.config.source_entry_path}/hello_vue.js"
|
5
5
|
|
6
|
-
puts "Copying
|
7
|
-
copy_file "#{__dir__}/examples/vue/
|
8
|
-
|
9
|
-
puts "Copying vue app file to #{Webpacker::Configuration.entry_path}"
|
10
|
-
copy_file "#{__dir__}/examples/vue/app.vue", "#{Webpacker::Configuration.entry_path}/app.vue"
|
6
|
+
puts "Copying vue app file to #{Webpacker.config.source_entry_path}"
|
7
|
+
copy_file "#{__dir__}/examples/vue/app.vue", "#{Webpacker.config.source_entry_path}/app.vue"
|
11
8
|
|
12
9
|
puts "Installing all vue dependencies"
|
13
10
|
run "yarn add vue vue-loader vue-template-compiler"
|
data/lib/tasks/webpacker.rake
CHANGED
@@ -3,7 +3,7 @@ tasks = {
|
|
3
3
|
"webpacker:compile" => "Compiles webpack bundles based on environment",
|
4
4
|
"webpacker:check_node" => "Verifies if Node.js is installed",
|
5
5
|
"webpacker:check_yarn" => "Verifies if yarn is installed",
|
6
|
-
"webpacker:
|
6
|
+
"webpacker:check_binstubs" => "Verifies that bin/webpack & bin/webpack-dev-server are present",
|
7
7
|
"webpacker:verify_install" => "Verifies if webpacker is installed",
|
8
8
|
"webpacker:yarn_install" => "Support for older Rails versions. Install all JavaScript dependencies as specified via Yarn",
|
9
9
|
"webpacker:install:react" => "Installs and setup example React component",
|
@@ -1,8 +1,9 @@
|
|
1
1
|
namespace :webpacker do
|
2
2
|
desc "Verifies that bin/webpack & bin/webpack-dev-server are present."
|
3
|
-
task :
|
3
|
+
task :check_binstubs do
|
4
4
|
unless File.exist?("bin/webpack") && File.exist?("bin/webpack-dev-server")
|
5
|
-
puts "Webpack binstubs not found.\n"\
|
5
|
+
$stderr.puts "Webpack binstubs not found.\n"\
|
6
|
+
"Have you run rails webpacker:install ?\n"\
|
6
7
|
"Make sure the bin directory or binstubs are not included in .gitignore\n"\
|
7
8
|
"Exiting!"
|
8
9
|
exit!
|
@@ -3,17 +3,19 @@ namespace :webpacker do
|
|
3
3
|
task :check_node do
|
4
4
|
begin
|
5
5
|
node_version = `node -v`
|
6
|
-
|
6
|
+
node_version = `nodejs -v` if node_version.blank?
|
7
|
+
required_node_version = "6.0"
|
7
8
|
|
8
9
|
raise Errno::ENOENT if node_version.blank?
|
10
|
+
|
9
11
|
if Gem::Version.new(node_version.strip.tr("v", "")) < Gem::Version.new(required_node_version)
|
10
|
-
puts "Webpacker requires Node.js >= v#{required_node_version} and you are using #{node_version}"
|
11
|
-
puts "Please upgrade Node.js https://nodejs.org/en/download/"
|
12
|
-
puts "Exiting!" && exit!
|
12
|
+
$stderr.puts "Webpacker requires Node.js >= v#{required_node_version} and you are using #{node_version}"
|
13
|
+
$stderr.puts "Please upgrade Node.js https://nodejs.org/en/download/"
|
14
|
+
$stderr.puts "Exiting!" && exit!
|
13
15
|
end
|
14
16
|
rescue Errno::ENOENT
|
15
|
-
puts "Node.js not installed. Please download and install Node.js https://nodejs.org/en/download/"
|
16
|
-
puts "Exiting!" && exit!
|
17
|
+
$stderr.puts "Node.js not installed. Please download and install Node.js https://nodejs.org/en/download/"
|
18
|
+
$stderr.puts "Exiting!" && exit!
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
@@ -8,8 +8,8 @@ namespace :webpacker do
|
|
8
8
|
|
9
9
|
raise Errno::ENOENT if yarn_version.blank? || Gem::Version.new(yarn_version) < Gem::Version.new(required_yarn_version)
|
10
10
|
rescue Errno::ENOENT
|
11
|
-
puts "Webpacker requires Yarn version >= #{required_yarn_version}. Please download and install the latest version from https://yarnpkg.com/lang/en/docs/install/"
|
12
|
-
puts "Exiting!" && exit!
|
11
|
+
$stderr.puts "Webpacker requires Yarn version >= #{required_yarn_version}. Please download and install the latest version from https://yarnpkg.com/lang/en/docs/install/"
|
12
|
+
$stderr.puts "Exiting!" && exit!
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -3,9 +3,8 @@ 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
|
-
|
8
|
-
puts "Removed webpack output path directory #{output_path}"
|
6
|
+
Webpacker.clobber
|
7
|
+
$stdout.puts "Removed webpack output path directory #{Webpacker.config.public_output_path}"
|
9
8
|
end
|
10
9
|
end
|
11
10
|
|
@@ -1,25 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
$stdout.sync = true
|
2
|
+
|
3
|
+
def ensure_log_goes_to_stdout
|
4
|
+
old_logger = Webpacker.logger
|
5
|
+
Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
|
6
|
+
yield
|
7
|
+
ensure
|
8
|
+
Webpacker.logger = old_logger
|
9
|
+
end
|
4
10
|
|
5
11
|
namespace :webpacker do
|
6
12
|
desc "Compile javascript packs using webpack for production with digests"
|
7
13
|
task compile: ["webpacker:verify_install", :environment] do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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!
|
14
|
+
ensure_log_goes_to_stdout do
|
15
|
+
if Webpacker.compile
|
16
|
+
# Successful compilation!
|
17
|
+
else
|
18
|
+
# Failed compilation
|
19
|
+
exit!
|
20
|
+
end
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
@@ -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, :
|
6
|
-
if
|
7
|
-
puts "Webpacker is installed 🎉 🍰"
|
8
|
-
puts "Using #{Webpacker
|
5
|
+
task verify_install: [:check_node, :check_yarn, :check_binstubs] do
|
6
|
+
if Webpacker.config.config_path.exist?
|
7
|
+
$stdout.puts "Webpacker is installed 🎉 🍰"
|
8
|
+
$stdout.puts "Using #{Webpacker.config.config_path} file for setting up webpack paths"
|
9
9
|
else
|
10
|
-
puts "Configuration config/webpacker.yml file not found. \n"\
|
10
|
+
$stderr.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!
|