webpack_native 0.4.8 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7de7af5462dbfb7dca5f49cf88f7ff38c74839b978e2a22f9c0cbcd43fde38a2
4
- data.tar.gz: 8cb00e2fe1480de8b395fbc7defc74aaf7b4a2907ed581a7e0b3b1427349734d
3
+ metadata.gz: 52730fd721366fee42c22883d57f87863f33028a43861aa64fc47f79cfc68108
4
+ data.tar.gz: e7d34f86a9c57c64dfc9156119b4a64b3506938d71f549830f75ad033dbeed55
5
5
  SHA512:
6
- metadata.gz: dfdd2efc49ba5bde50842dd4a88792189408007ee8330e8f1d89217f39a14775cad8a3d7bc242962d9b41be3b3b7f42b00bcb3deb173c449b77c51ea6466131b
7
- data.tar.gz: 430c6ed6d0eb694fe0c402a2ac9c871332d27c06d08e542cd387ea598176bc2d06d043d014c84598c2e300851334621eaffcb25841f7b468de1325cedc4fe1a3
6
+ metadata.gz: 3147c13eaeec9c101db763d906d150aa5b2ed8c752282c81880ef9971e114b37d5c22c3536bb4269e18b3c40fe6b7f38a0472ffad08b9edda1c758f78af19cc3
7
+ data.tar.gz: ca2555a53dc5421e867f3d39d38019facac103d6b8e2089e8f1abb2497023010e27db7d6e4c07d161714cb4e922c2a3e6dd747efb418d2f1ca62779169f4de46
@@ -7,6 +7,7 @@ class WebpackNative::DevGenerator < Rails::Generators::Base
7
7
  Mutex.new.synchronize do
8
8
  Dir.chdir "#{Rails.root}/app/webpack_native" do
9
9
  Dir.mkdir('src/images') unless Dir.exist?('src/images')
10
+ Dir.mkdir('src/favicons') unless Dir.exist?('src/favicons')
10
11
  %x{ yarn install }
11
12
  result = %x{ npm run build:dev }
12
13
  puts "\n"
@@ -2,6 +2,7 @@
2
2
  import '../stylesheets/application.scss';
3
3
  // the following line requires that images folder exists
4
4
  require.context('../images', true, /\.(gif|jpeg|jpg|png|svg)$/i);
5
+ require.context('../favicons', true);
5
6
 
6
7
  require("@rails/ujs").start();
7
8
  require("turbolinks").start();
@@ -25,7 +25,7 @@ module.exports = (env, options) => {
25
25
  application: "./src/javascripts/application.js"
26
26
  },
27
27
  output: {
28
- filename: devMode ? '[name].js' : '[name]-[contenthash].js',
28
+ filename: '[name]-[contenthash].js',
29
29
  path: path.resolve(__dirname, '../../public/webpack_native')
30
30
  },
31
31
  module: {
@@ -57,13 +57,34 @@ module.exports = (env, options) => {
57
57
  ],
58
58
  },
59
59
  {
60
- test: /\.(png|jpg|gif|svg)$/i,
60
+ test: /\.(png|jpg|jpeg|gif|svg|ttf|woff2|woff|eot)$/i,
61
+ exclude: [
62
+ path.resolve(__dirname, "src/favicons")
63
+ ],
61
64
  use: [
62
65
  {
63
66
  loader: 'url-loader',
64
67
  options: {
65
68
  limit: false,
66
- name: devMode ? '[name].[ext]' : '[name]-[hash:7].[ext]'
69
+ name: '[name]-[hash:7].[ext]'
70
+ },
71
+ },
72
+ // { loader: 'image-webpack-loader' }
73
+ ],
74
+ },
75
+ {
76
+ test: /\.(png|jpg|jpeg|svg|ttf|ico|webmanifest)$/i,
77
+ exclude: [
78
+ path.resolve(__dirname, "src/images"),
79
+ path.resolve(__dirname, 'node_modules')
80
+ ],
81
+ use: [
82
+ {
83
+ loader: 'url-loader',
84
+ options: {
85
+ limit: false, //8192,
86
+ name: '[name].[ext]',
87
+ outputPath: '../../public'
67
88
  },
68
89
  },
69
90
  // { loader: 'image-webpack-loader' }
@@ -79,7 +100,7 @@ module.exports = (env, options) => {
79
100
  new WebpackManifestPlugin(),
80
101
  new CleanWebpackPlugin(),
81
102
  new MiniCssExtractPlugin({
82
- filename: devMode ? '[name].css' : '[name]-[contenthash].css',
103
+ filename: '[name]-[contenthash].css',
83
104
  }),
84
105
  // In production, compress static files to .gz (using zopfli) and .br (using brotli) format
85
106
  !devMode && new CompressionPlugin({
@@ -115,6 +136,6 @@ module.exports = (env, options) => {
115
136
  // ]
116
137
  // }
117
138
 
118
- }
139
+ };
119
140
 
120
- }
141
+ };
@@ -17,7 +17,8 @@ class WebpackNative::Railtie < ::Rails::Railtie
17
17
  end
18
18
 
19
19
  initializer "webpack_native_set_manifest" do
20
- if Rails.env.production?
20
+
21
+ if Rails.env.production? # on production only
21
22
 
22
23
  # create public/webpack_native if it doesn't exist:
23
24
 
@@ -39,6 +40,7 @@ class WebpackNative::Railtie < ::Rails::Railtie
39
40
  Rails.configuration.x.webpack_native.webpack_manifest_file = WebpackNative::WebpackNativeHelper.load_webpack_manifest
40
41
 
41
42
  end
43
+
42
44
  end
43
45
 
44
46
  def start_webpack
@@ -1,3 +1,3 @@
1
1
  module WebpackNative
2
- VERSION = "0.4.8"
2
+ VERSION = "0.5.5"
3
3
  end
@@ -1,5 +1,5 @@
1
1
  module WebpackNative::WebpackNativeHelper
2
-
2
+
3
3
  def webpack_stylesheet_tag(asset, **html_options)
4
4
  html_options = html_options.merge(
5
5
  href: webpack_stylesheet_path(asset),
@@ -43,6 +43,66 @@ module WebpackNative::WebpackNativeHelper
43
43
  def webpack_image_path(image, **options)
44
44
  image_path(webpack_native_lookup(image), **options)
45
45
  end
46
+
47
+ # ====== Favicon helpers ======
48
+ # usage:
49
+ # <%= webpack_favicons('apple-touch-icon.png', 'favicon-32x32.png', 'favicon-16x16.png') %>
50
+ # <%= webpack_webmanifest('manifest.webmanifest') %>
51
+
52
+ # result:
53
+ #<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
54
+ #<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
55
+ #<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
56
+ #<link rel="manifest" href="/site.webmanifest">
57
+
58
+ def webpack_favicons(*args)
59
+ tags = []
60
+ args.each do |favicon|
61
+
62
+ filename = File.basename(favicon, ".*") # exclude the extension
63
+ ext = File.extname(favicon)
64
+
65
+ if ext == '.webmanifest'
66
+ manifest = favicon
67
+ html_options = {
68
+ rel: 'manifest',
69
+ href: "/#{manifest}"
70
+ }
71
+
72
+ else
73
+ mimetypes = {
74
+ '.png' => 'image/png',
75
+ '.jpg' => 'image/jpg',
76
+ '.jpeg' => 'image/jpeg',
77
+ '.webp' => 'image/webp',
78
+ '.tiff' => 'image/tiff',
79
+ '.svg' => 'image/svg+xml',
80
+ '.ico' => 'image/x-icon'
81
+ }
82
+
83
+ html_options = {
84
+ rel: filename == 'apple-touch-icon' ? 'apple-touch-icon' : 'icon',
85
+ type: mimetypes[ext],
86
+ href: "/#{favicon}"
87
+ }
88
+
89
+ sizes = filename[/(.+)?([0-9]{2,3}x[0-9]{2,3})(.+)?/, 2]
90
+
91
+ sizes = '180×180' if filename == 'apple-touch-icon'
92
+
93
+ html_options = html_options.merge({sizes: sizes}) unless sizes.nil?
94
+
95
+ end
96
+
97
+ tags << tag.link(html_options)
98
+
99
+ end
100
+
101
+ return tags.join.html_safe
102
+
103
+ end
104
+
105
+ # ====== End favicon helpers ======
46
106
 
47
107
  private
48
108
 
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.4.8
4
+ version: 0.5.5
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-17 00:00:00.000000000 Z
11
+ date: 2021-04-01 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!