webpack_native 0.3.7 → 0.4.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 364ab7abe793fccf23fb730c0c16ab8d3a7a53082ad611efe8668ea37f79a4f6
4
- data.tar.gz: 36b17b11cad6492ca2b4c58b0de76e941fada353460d832af1c2fd53663f4083
3
+ metadata.gz: 80686b5e334f35311ea0c314897a32d9827ce0a431614abefe97508dbe9f7b21
4
+ data.tar.gz: 11fc48dca370fb6e185ca1addf6bbe7df0d0248719ab86746ee4c908e9c2564a
5
5
  SHA512:
6
- metadata.gz: '008430165b30c2783511099bbbc208e708418836f32563e4f5104d565d059d80e573964c9912ed0f34742ece9bfe548527139cbc8970ecd79cdb347f05d906f2'
7
- data.tar.gz: bacc4f6434cbd676016ca6f5a8a44772f8483e123e845073935f1e5347834c1f7d48eb0574ad167915dd40e373644d9d80d50f9e52a54a7bfffbc167cc4eb80c
6
+ metadata.gz: 7a60e3289035818851216ac3c019bb732e3490c6b59a5d72d26f5bad176db90e04a96818df8042c352513a82d8e26e24ccdc09218a5b4f7e2723f4aafa29480e
7
+ data.tar.gz: 9605224ecf3d0bde417c28670636021d78b58372bb5120e8241ffcf3b1079afb6f2fd5efa7dd61180df5952d86fdba2ac35820afa774ca1b7daab38db600078c
@@ -6,6 +6,8 @@ class WebpackNative::DevGenerator < Rails::Generators::Base
6
6
 
7
7
  Mutex.new.synchronize do
8
8
  Dir.chdir "#{Rails.root}/app/webpack_native" do
9
+ Dir.mkdir('src/images') unless Dir.exist?('src/images')
10
+ %x{ yarn install }
9
11
  result = %x{ npm run build:dev }
10
12
  puts "\n"
11
13
  puts result
@@ -19,9 +19,9 @@ class WebpackNative::InstallGenerator < Rails::Generators::Base
19
19
  def inject_stylesheets_and_javascript_tags
20
20
  application_layout = "#{Rails.root}/app/views/layouts/application.html.erb"
21
21
 
22
- stylesheets_tag = "<%= webpack_stylesheet_url 'application', media: 'all', 'data-turbolinks-track': 'reload' %>"
22
+ stylesheets_tag = "<%= webpack_stylesheet_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>"
23
23
 
24
- javascripts_tag = "<%= webpack_javascript_url 'application', 'data-turbolinks-track': 'reload' %>"
24
+ javascripts_tag = "<%= webpack_javascript_tag 'application', 'data-turbolinks-track': 'reload' %>"
25
25
 
26
26
  inject_into_file application_layout, "\n\t\t#{stylesheets_tag}\n\t\t#{javascripts_tag}\n", :before => '</head>'
27
27
  end
@@ -6,6 +6,7 @@ class WebpackNative::ProdGenerator < Rails::Generators::Base
6
6
 
7
7
  Mutex.new.synchronize do
8
8
  Dir.chdir "#{Rails.root}/app/webpack_native" do
9
+ Dir.mkdir('src/images') unless Dir.exist?('src/images')
9
10
  %x{ yarn install }
10
11
  result = %x{ npm run build:prod }
11
12
  puts "\n"
@@ -60,7 +60,7 @@ module.exports = (env, options) => {
60
60
  {
61
61
  loader: 'url-loader',
62
62
  options: {
63
- limit: 8192,
63
+ limit: false,
64
64
  name: devMode ? '[name].[ext]' : '[name]-[hash:7].[ext]'
65
65
  },
66
66
  },
@@ -1,5 +1,6 @@
1
1
  require 'rails'
2
2
  require "open3"
3
+ require "fileutils"
3
4
 
4
5
  class WebpackNative::Railtie < ::Rails::Railtie
5
6
 
@@ -7,16 +8,36 @@ class WebpackNative::Railtie < ::Rails::Railtie
7
8
  WebpackNative.logger = ActiveSupport::Logger.new(STDOUT)
8
9
  end
9
10
 
11
+ # Zeitwerk raise an error: set_autoloads_in_dir': wrong constant name Path-dirname inferred by Module from directory (Zeitwerk::NameError) ---> app/webpack_native/node_modules/path-dirname
12
+ # to prevent Zeitwerk from eager loading webpack_native folder we use this:
13
+ initializer "zeitwerk_prevent_loading_webpack_native" do
14
+ if Rails.autoloaders.zeitwerk_enabled?
15
+ Rails.autoloaders.main.ignore(Rails.root.join('app/webpack_native'))
16
+ end
17
+ end
18
+
10
19
  initializer "webpack_native_set_manifest" do
11
20
  if Rails.env.production?
12
- manifest_path = "#{Rails.root}/public/webpack_native/manifest.json"
21
+
22
+ # create public/webpack_native if it doesn't exist:
23
+
24
+ webpack_native_folder = "#{Rails.root}/public/webpack_native"
25
+
26
+ unless File.directory?(webpack_native_folder)
27
+ FileUtils.mkdir_p(webpack_native_folder)
28
+ end
29
+
13
30
  # create manifest.json file if it doesn't exist with an empty json {} to prevent raising error in WebpackNativeHelper.load_webpack_manifest if a restart of a service happen (i.e delayed_job restart) that causes rails to load
14
- if !File.file?(manifest_path)
15
- #FileUtils.touch
31
+
32
+ manifest_path = "#{Rails.root}/public/webpack_native/manifest.json"
33
+
34
+ unless File.file?(manifest_path)
35
+ FileUtils.touch manifest_path
16
36
  File.write manifest_path, "{}"
17
37
  end
18
38
  require_relative 'webpack_native_helper'
19
39
  Rails.configuration.x.webpack_native.webpack_manifest_file = WebpackNative::WebpackNativeHelper.load_webpack_manifest
40
+
20
41
  end
21
42
  end
22
43
 
@@ -1,3 +1,3 @@
1
1
  module WebpackNative
2
- VERSION = "0.3.7"
2
+ VERSION = "0.4.7"
3
3
  end
@@ -1,28 +1,55 @@
1
1
  module WebpackNative::WebpackNativeHelper
2
2
 
3
- def webpack_stylesheet_url(asset, **html_options)
3
+ def webpack_stylesheet_tag(asset, **html_options)
4
4
  html_options = html_options.merge(
5
- href: "/webpack_native/#{webpack_manifest_file.fetch("#{asset}.css")}",
5
+ href: webpack_stylesheet_path(asset),
6
6
  rel: "stylesheet"
7
7
  )
8
8
  tag.link(html_options).html_safe
9
9
  end
10
10
 
11
- def webpack_javascript_url(asset, **html_options)
11
+ def webpack_stylesheet_path(asset, **options)
12
+ path_to_asset(webpack_native_lookup("#{asset.gsub('.css', '')}.css"), options)
13
+ end
14
+
15
+ def webpack_stylesheet_url(asset, **options)
16
+ url_to_asset(webpack_native_lookup("#{asset.gsub('.css', '')}.css"), options)
17
+ end
18
+
19
+ def webpack_javascript_tag(asset, **html_options)
12
20
  html_options = html_options.merge(
13
21
  type: "text/javascript",
14
- src: "/webpack_native/#{webpack_manifest_file.fetch("#{asset}.js")}"
22
+ src: webpack_javascript_path(asset)
15
23
  )
16
24
  content_tag("script".freeze, nil, html_options).html_safe
17
25
  # or tag.script(html_options).html_safe
18
26
  end
19
27
 
20
- def webpack_image_url(file_name, **options)
21
- image_tag("/webpack_native/#{file_name}", **options)
28
+ def webpack_javascript_url(asset, **options)
29
+ url_to_asset(webpack_native_lookup("#{asset.gsub('.js', '')}.js"), options)
30
+ end
31
+ def webpack_javascript_path(asset, **options)
32
+ path_to_asset(webpack_native_lookup("#{asset.gsub('.js', '')}.js"), options)
33
+ end
34
+
35
+ def webpack_image_tag(image, **options)
36
+ image_tag(webpack_native_lookup(image), **options)
37
+ end
38
+
39
+ def webpack_image_url(image, **options)
40
+ image_url(webpack_native_lookup(image), **options)
41
+ end
42
+
43
+ def webpack_image_path(image, **options)
44
+ image_path(webpack_native_lookup(image), **options)
22
45
  end
23
46
 
24
47
  private
25
48
 
49
+ def webpack_native_lookup(file)
50
+ "/webpack_native/#{webpack_manifest_file.fetch("#{file}")}"
51
+ end
52
+
26
53
  def webpack_manifest_file
27
54
  # in production, webpack_manifest_file is initialized in railtie.rb file to load one time only, while in development we call load_webpack_manifest on each new request
28
55
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webpack_native
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - scratchoo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-08 00:00:00.000000000 Z
11
+ date: 2020-10-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Use vanilla webpack to manage your assets efficiently, no webpacker or
14
14
  asset pipeline anymore!