opal-webpack-loader 0.8.8 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bea86452f39ecdabf13c4b301b2593a5f7c95d8fb1869d5da0aeff75d60cd195
4
- data.tar.gz: 2b6d29a971da82914d2a92520bc5fade0d3436ffc0fc3cc0d59f8a7445d27d11
3
+ metadata.gz: 6b9be7c0874e8efdf2c1c15c2a38bf1cc107136626239924aaf0d2407983c4f6
4
+ data.tar.gz: e3c584bc62ca84f981d1800664c510d332c92a7d4f018c91d1e0a7ccf853e98f
5
5
  SHA512:
6
- metadata.gz: 37103b5030a63091eed19db90605c9f5307c2f00bcc8af5e0fc9a596201c3b9ee8f209b8afdc6104fbd179fc17fb522c262fbb4a3addd02526efd29302d0c072
7
- data.tar.gz: 4ed3753886bc1646d18caf4e0b2f082d7ce14c787ac9c2318b1a5236173095220a6d8a7ec7b75394123a7a54b8ba7f53ad8e50121d4a165cda6cf1289316b51b
6
+ metadata.gz: 4ef420caee7d006a798b70b5bbfc51d46c1d3520d15be5afe7b8f3af4cf627c7c7450490c7531c63b25818e358456afef1572983cbe3b9d3c4fb781f22ba977f
7
+ data.tar.gz: 4907ac5ebacb26340fcdcc0016801b762030398d36b4c3884d89df95ab5d38a174257b1e957eaa3c467122692d3b75ac9892bc210d912c5de3f3535eea5e96a0
@@ -10,16 +10,9 @@ require 'opal-webpack-loader/load_path_manager'
10
10
  require 'opal-webpack-loader/compile_worker'
11
11
  require 'opal-webpack-loader/compile_server'
12
12
 
13
- at_exit do
14
- if OpalWebpackLoader::CompileServer.unlink_socket?
15
- if File.exist?(OpalWebpackLoader::CompileServer::OWCS_SOCKET_PATH)
16
- File.unlink(OpalWebpackLoader::CompileServer::OWCS_SOCKET_PATH)
17
- end
18
- end
19
- end
20
-
21
13
  modules_to_require = []
22
14
  compiler_options = {}
15
+ compile_server_options = {}
23
16
 
24
17
  OptionParser.new do |opts|
25
18
  opts.on('-r', '--require MODULE', 'Require the module before starting the compile server.') do |m|
@@ -43,17 +36,33 @@ OptionParser.new do |opts|
43
36
  opts.on('-f', '--false FLAG', 'Set compiler flag to false.' ) do |f|
44
37
  compiler_options[f.to_sym] = false
45
38
  end
39
+
40
+ opts.on('-l', '--load-paths-cache PATH', 'Path to load path cache json') do |l|
41
+ compile_server_options[:load_paths_cache] = l
42
+ end
43
+
44
+ opts.on('-s', '--socket-path PATH', 'Path of the socket the compile server should create.') do |s|
45
+ compile_server_options[:socket_path] = s
46
+ end
46
47
  end.parse!
47
48
 
48
49
  modules_to_require.each do |mod|
49
50
  require mod
50
51
  end
51
52
 
53
+ at_exit do
54
+ if OpalWebpackLoader::CompileServer.unlink_socket?
55
+ if File.exist?(compile_server_options[:socket_path])
56
+ File.unlink(compile_server_options[:socket_path])
57
+ end
58
+ end
59
+ end
60
+
52
61
  if ARGV[0] == 'stop' || ARGV[0] == 'kill'
53
- OpalWebpackLoader::CompileServer.stop
62
+ OpalWebpackLoader::CompileServer.stop(compile_server_options[:socket_path])
54
63
  else
55
64
  if ARGV[0] == 'start'
56
- OpalWebpackLoader::CompileServer.stop(false)
65
+ OpalWebpackLoader::CompileServer.stop(compile_server_options[:socket_path],false)
57
66
  number_of_workers = ARGV[1].to_i
58
67
  number_of_workers == 4 if number_of_workers == 0
59
68
  number_of_workers == 16 if number_of_workers > 16
@@ -69,18 +78,18 @@ else
69
78
  exit(1)
70
79
  end
71
80
 
72
- load_paths = OpalWebpackLoader::LoadPathManager.read_load_paths_cache
81
+ load_paths = OpalWebpackLoader::LoadPathManager.read_load_paths_cache(compile_server_options[:load_paths_cache])
73
82
  if load_paths
74
83
  Opal.append_paths(*load_paths)
75
84
  end
76
85
 
77
- pid = fork { OpalWebpackLoader::CompileServer.new.start(number_of_workers, compiler_options) }
86
+ pid = fork { OpalWebpackLoader::CompileServer.new.start(number_of_workers, compiler_options, compile_server_options[:socket_path]) }
78
87
 
79
88
  have_socket = false
80
89
  start_time = Time.now
81
90
  begin
82
91
  until have_socket
83
- if File.exist?(OpalWebpackLoader::CompileServer::OWCS_SOCKET_PATH)
92
+ if File.exist?(compile_server_options[:socket_path])
84
93
  have_socket = true
85
94
  else
86
95
  if Time.now - start_time > 60
@@ -3,9 +3,6 @@ require 'tempfile'
3
3
 
4
4
  module OpalWebpackLoader
5
5
  class CompileServer
6
- OWL_CACHE_DIR = File.join('.','.owl_cache/')
7
- OWL_LP_CACHE = File.join(OWL_CACHE_DIR, 'load_paths.json')
8
- OWCS_SOCKET_PATH = File.join(OWL_CACHE_DIR, 'owcs_socket')
9
6
  SIGNALS = %w[QUIT INT TERM]
10
7
  TIMEOUT = 15
11
8
 
@@ -21,11 +18,11 @@ module OpalWebpackLoader
21
18
  @unlink = false
22
19
  end
23
20
 
24
- def self.stop(do_exit = true)
25
- if File.exist?(OWCS_SOCKET_PATH)
21
+ def self.stop(socket_path, do_exit = true)
22
+ if File.exist?(socket_path)
26
23
  dont_unlink_socket_on_exit
27
24
  begin
28
- s = UNIXSocket.new(OWCS_SOCKET_PATH)
25
+ s = UNIXSocket.new(socket_path)
29
26
  s.send("command:stop\x04", 0)
30
27
  s.close
31
28
  rescue
@@ -42,12 +39,12 @@ module OpalWebpackLoader
42
39
  @signal_queue = []
43
40
  end
44
41
 
45
- def start(number_of_workers = 4, compiler_options)
42
+ def start(number_of_workers = 4, compiler_options, socket_path)
46
43
  $PROGRAM_NAME = 'owl compile server'
47
44
  @number_of_workers = number_of_workers
48
45
  @server_pid = Process.pid
49
46
  $stderr.sync = $stdout.sync = true
50
- @socket = UNIXServer.new(OWCS_SOCKET_PATH)
47
+ @socket = UNIXServer.new(socket_path)
51
48
  spawn_workers(compiler_options)
52
49
  SIGNALS.each { |sig| trap_deferred(sig) }
53
50
  trap('CHLD') { @write_pipe.write_nonblock('.') }
@@ -298,7 +298,7 @@ module OpalWebpackLoader
298
298
  end
299
299
 
300
300
  def production_script
301
- "webpack --config=#{File.join(@webpack_config_directory, 'production.js')}"
301
+ "parallel-webpack --config=#{File.join(@webpack_config_directory, 'production.js')}"
302
302
  end
303
303
 
304
304
  def install_webpack_config
@@ -25,12 +25,14 @@ module OpalWebpackLoader
25
25
  path_entries
26
26
  end
27
27
 
28
- def self.read_load_paths_cache
29
- load_paths_cache = Oj.load(File.read(OpalWebpackLoader::CompileServer::OWL_LP_CACHE), mode: :strict)
28
+ def self.read_load_paths_cache(json_path)
29
+ load_paths_cache = Oj.load(File.read(json_path), mode: :strict)
30
30
  load_paths_cache['opal_load_paths']
31
31
  end
32
32
 
33
- def self.create_load_paths_cache(filter)
33
+ def self.create_load_paths_cache(args)
34
+ cache_path = args[0]
35
+ filter = args[1..-1]
34
36
  load_paths = if File.exist?(File.join('bin', 'rails'))
35
37
  %x{
36
38
  bundle exec rails runner "puts (Rails.configuration.respond_to?(:assets) ? (Rails.configuration.assets.paths + Opal.paths).uniq : Opal.paths)"
@@ -54,8 +56,7 @@ module OpalWebpackLoader
54
56
  load_path_entries.push(*more_path_entries) if more_path_entries.size > 0
55
57
  end
56
58
  cache_obj = { 'opal_load_paths' => load_path_lines, 'opal_load_path_entries' => load_path_entries }
57
- Dir.mkdir(OpalWebpackLoader::CompileServer::OWL_CACHE_DIR) unless Dir.exist?(OpalWebpackLoader::CompileServer::OWL_CACHE_DIR)
58
- File.write(OpalWebpackLoader::CompileServer::OWL_LP_CACHE, Oj.dump(cache_obj, mode: :strict, indent: 2))
59
+ File.write(cache_path, Oj.dump(cache_obj, mode: :strict, indent: 2))
59
60
  load_path_lines
60
61
  else
61
62
  raise 'Error getting load paths!'
@@ -9,6 +9,9 @@ const common_config = {
9
9
  context: path.resolve(__dirname, '<%= opal_directory %>'),
10
10
  mode: "development",
11
11
  optimization: {
12
+ removeAvailableModules: false,
13
+ removeEmptyChunks: false,
14
+ splitChunks: false,
12
15
  minimize: false // dont minimize for debugging
13
16
  },
14
17
  performance: {
@@ -9,6 +9,9 @@ const common_config = {
9
9
  context: path.resolve(__dirname, '<%= opal_directory %>'),
10
10
  mode: "development",
11
11
  optimization: {
12
+ removeAvailableModules: false,
13
+ removeEmptyChunks: false,
14
+ splitChunks: false,
12
15
  minimize: false // dont minimize in development, to speed up hot reloads
13
16
  },
14
17
  performance: {
@@ -16,6 +16,7 @@
16
16
  "extra-watch-webpack-plugin": "^1.0.3",
17
17
  "file-loader": "^1.1.11",
18
18
  "node-sass": "^4.12.0",
19
+ "parallel-webpack": "^2.4.0",
19
20
  "sass-loader": "^7.1.0",
20
21
  "style-loader": "^0.23.1",
21
22
  "terser-webpack-plugin": "^1.2.3",
@@ -1,3 +1,3 @@
1
1
  module OpalWebpackLoader
2
- VERSION="0.8.8"
2
+ VERSION="0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-webpack-loader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2019-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal