webpacker 2.0 → 3.0.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/.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!
|