opal-webpack-loader 0.6.4 → 0.6.5
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/lib/opal-webpack-loader/compile_server.rb +19 -7
- data/lib/opal-webpack-loader/installer_cli.rb +8 -9
- data/lib/opal-webpack-loader/templates/application.css.erb +4 -0
- data/lib/opal-webpack-loader/templates/application.js.erb +3 -0
- data/lib/opal-webpack-loader/templates/debug.js.erb +8 -5
- data/lib/opal-webpack-loader/templates/development.js.erb +8 -9
- data/lib/opal-webpack-loader/templates/package.json.erb +7 -0
- data/lib/opal-webpack-loader/templates/production.js.erb +1 -15
- data/lib/opal-webpack-loader/version.rb +1 -1
- data/spec/installer_spec.rb +2 -2
- data/spec/owl_spec.rb +22 -2
- data/spec/spec_helper.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b55e893894b05e91eab4ef13fa4a1c9a796e3258505725bdf2a80855639aa5f
|
4
|
+
data.tar.gz: cf6b3c096fe6e7cc28364416d3513e02257aa9c6c045bcedaf203f3e12e098d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad3d491649b5e555cef8260e0ddb3243c6db21a5f1525bdeadbfd6f98147b7108740f13555cd151d949d63a5f2511824d81051aa80462413dcad766c84234758
|
7
|
+
data.tar.gz: bfd86eaa367c5f329c8b73f0dbfffc5e9ba5a35d3450c2ad1fe05b0c5167cc461a368cfee9e9e16053be1d38acd156697990999714bc4c9207b85f667fe5c18b
|
@@ -20,19 +20,31 @@ module OpalWebpackCompileServer
|
|
20
20
|
OWCS_SOCKET_PATH = OWL_CACHE_DIR + 'owcs_socket'
|
21
21
|
|
22
22
|
class Compiler < EventMachine::Connection
|
23
|
+
def initialize(*args)
|
24
|
+
@received_data = ''
|
25
|
+
super(*args)
|
26
|
+
end
|
27
|
+
|
23
28
|
def receive_data(data)
|
24
|
-
|
29
|
+
@received_data << data
|
30
|
+
|
31
|
+
return unless @received_data.end_with?("}\x04")
|
32
|
+
|
33
|
+
if @received_data.start_with?('command:stop')
|
25
34
|
EventMachine.stop
|
26
35
|
exit(0)
|
27
36
|
end
|
28
37
|
|
29
|
-
|
30
|
-
|
31
|
-
|
38
|
+
request_json = Oj.load(@received_data.chop!, {})
|
39
|
+
|
40
|
+
@received_data = ''
|
41
|
+
|
42
|
+
compile_source_map = request_json["source_map"]
|
43
|
+
filename = request_json["filename"]
|
44
|
+
source = request_json["source"]
|
32
45
|
|
33
46
|
operation = proc do
|
34
47
|
begin
|
35
|
-
source = File.read(filename)
|
36
48
|
c = Opal::Compiler.new(source, file: filename, es6_modules: true)
|
37
49
|
c.compile
|
38
50
|
result = { 'javascript' => c.result }
|
@@ -45,12 +57,12 @@ module OpalWebpackCompileServer
|
|
45
57
|
result['required_trees'] = c.required_trees
|
46
58
|
Oj.dump(result, {})
|
47
59
|
rescue Exception => e
|
48
|
-
Oj.dump({ 'error' => { 'name' => e.class, 'message' => e.message, 'backtrace' => e.backtrace } }, {})
|
60
|
+
Oj.dump({ 'error' => { 'name' => e.class, 'message' => e.message, 'backtrace' => e.backtrace.join("\n") } }, {})
|
49
61
|
end
|
50
62
|
end
|
51
63
|
|
52
64
|
callback = proc do |json|
|
53
|
-
self.send_data(json
|
65
|
+
self.send_data(json)
|
54
66
|
close_connection_after_writing
|
55
67
|
end
|
56
68
|
|
@@ -33,6 +33,7 @@ module OpalWebpackLoader
|
|
33
33
|
# +- spec
|
34
34
|
# +- tmp
|
35
35
|
def iso
|
36
|
+
@application_css = '../styles/application.css'
|
36
37
|
@asset_output_directory = File.join('public', 'assets')
|
37
38
|
@js_entrypoints_directory = File.join('isomorfeus', 'imports')
|
38
39
|
@conf_rel_prefix = '..'
|
@@ -43,6 +44,7 @@ module OpalWebpackLoader
|
|
43
44
|
create_common_directories
|
44
45
|
create_isomorfeus_directories
|
45
46
|
install_webpack_config
|
47
|
+
create_file_from_template('application.css.erb', File.join('isomorfeus', 'styles', 'application.css'), {})
|
46
48
|
create_file_from_template('initializer.rb.erb', File.join('config', 'owl_init.rb'), {})
|
47
49
|
add_gem
|
48
50
|
print_message
|
@@ -70,6 +72,7 @@ module OpalWebpackLoader
|
|
70
72
|
TEXT
|
71
73
|
|
72
74
|
def flat
|
75
|
+
@application_css = '../styles/application.css'
|
73
76
|
@asset_output_directory = File.join('public', 'assets')
|
74
77
|
@js_entrypoints_directory = File.join('javascripts')
|
75
78
|
@conf_rel_prefix = '..'
|
@@ -80,11 +83,11 @@ module OpalWebpackLoader
|
|
80
83
|
create_directory(@styles_directory)
|
81
84
|
create_common_directories
|
82
85
|
install_common_things
|
86
|
+
create_file_from_template('application.css.erb', File.join('styles', 'application.css'), {})
|
83
87
|
create_file_from_template('initializer.rb.erb', 'owl_init.rb', { opal_directory: @opal_directory })
|
84
88
|
create_file_from_template('app_loader.rb.erb', 'app_loader.rb', {})
|
85
89
|
add_gem
|
86
90
|
print_message
|
87
|
-
puts "Make sure to require the owl initializer, e.g. `require './owl_init'`, in your projects startup file."
|
88
91
|
end
|
89
92
|
|
90
93
|
desc "rails", "Install owl configuration into a existing rails project, execute from the projects root directory."
|
@@ -113,6 +116,7 @@ module OpalWebpackLoader
|
|
113
116
|
TEXT
|
114
117
|
|
115
118
|
def rails
|
119
|
+
@application_css = '../stylesheets/application.css'
|
116
120
|
@asset_output_directory = File.join('public', 'assets')
|
117
121
|
@js_entrypoints_directory = File.join('app', 'assets', 'javascripts')
|
118
122
|
@conf_rel_prefix = File.join('..', '..')
|
@@ -163,7 +167,7 @@ module OpalWebpackLoader
|
|
163
167
|
end
|
164
168
|
|
165
169
|
def install_js_entries
|
166
|
-
erb_hash = { opal_dir: File.join(@js_rel_prefix, @opal_directory), opal_name: options[:opal_name] }
|
170
|
+
erb_hash = { opal_dir: File.join(@js_rel_prefix, @opal_directory), opal_name: options[:opal_name], application_css: @application_css }
|
167
171
|
create_file_from_template('application.js.erb', File.join(@js_entrypoints_directory, 'application.js'), erb_hash)
|
168
172
|
create_file_from_template('application_common.js.erb', File.join(@js_entrypoints_directory, 'application_common.js'),erb_hash)
|
169
173
|
create_file_from_template('application_debug.js.erb', File.join(@js_entrypoints_directory, 'application_debug.js'), erb_hash)
|
@@ -185,13 +189,8 @@ module OpalWebpackLoader
|
|
185
189
|
package_json["scripts"]["development"] = development_script
|
186
190
|
package_json["scripts"]["production_build"] = production_script
|
187
191
|
package_json["devDependencies"] = {} unless package_json.has_key?("devDependencies")
|
188
|
-
package_json["devDependencies"]
|
189
|
-
package_json["devDependencies"]["
|
190
|
-
package_json["devDependencies"]["opal-webpack-loader"] = OpalWebpackLoader::VERSION
|
191
|
-
package_json["devDependencies"]["webpack"] = gem_package_json["devDependencies"]["webpack"]
|
192
|
-
package_json["devDependencies"]["webpack-cli"] = gem_package_json["devDependencies"]["webpack-cli"]
|
193
|
-
package_json["devDependencies"]["webpack-dev-server"] = gem_package_json["devDependencies"]["webpack-dev-server"]
|
194
|
-
package_json["devDependencies"]["webpack-manifest-plugin"] = gem_package_json["devDependencies"]["webpack-manifest-plugin"]
|
192
|
+
package_json["devDependencies"].merge!(gem_package_json["devDependencies"])
|
193
|
+
package_json["devDependencies"]["opal-webpack-loader"] = "^#{OpalWebpackLoader::VERSION}"
|
195
194
|
File.write('package.json', Oj.dump(package_json, mode: :strict))
|
196
195
|
puts "Updated package.json, updated scripts and owl dependencies"
|
197
196
|
else
|
@@ -3,6 +3,7 @@ const path = require('path');
|
|
3
3
|
const webpack = require('webpack');
|
4
4
|
const chokidar = require('chokidar');
|
5
5
|
const OwlResolver = require('opal-webpack-loader/resolver'); // to resolve ruby files
|
6
|
+
const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin'); // to watch for added ruby files
|
6
7
|
|
7
8
|
module.exports = {
|
8
9
|
context: path.resolve(__dirname, '<%= opal_directory %>'),
|
@@ -42,7 +43,11 @@ module.exports = {
|
|
42
43
|
plugins: [
|
43
44
|
// both for hot reloading
|
44
45
|
new webpack.NamedModulesPlugin(),
|
45
|
-
new webpack.HotModuleReplacementPlugin()
|
46
|
+
new webpack.HotModuleReplacementPlugin(),
|
47
|
+
// watch for added files in opal dir
|
48
|
+
new ExtraWatchWebpackPlugin({
|
49
|
+
dirs: [ path.resolve(__dirname, '<%= opal_directory %>') ]
|
50
|
+
})
|
46
51
|
],
|
47
52
|
module: {
|
48
53
|
rules: [
|
@@ -60,8 +65,7 @@ module.exports = {
|
|
60
65
|
{
|
61
66
|
loader: "css-loader",
|
62
67
|
options: {
|
63
|
-
sourceMap: true
|
64
|
-
minimize: false // set to false to speed up hot reloads
|
68
|
+
sourceMap: true // set to false to speed up hot reloads
|
65
69
|
}
|
66
70
|
},
|
67
71
|
{
|
@@ -86,8 +90,7 @@ module.exports = {
|
|
86
90
|
{
|
87
91
|
loader: "css-loader",
|
88
92
|
options: {
|
89
|
-
sourceMap: true
|
90
|
-
minimize: false // set to false to speed up hot reloads
|
93
|
+
sourceMap: true // set to false to speed up hot reloads
|
91
94
|
}
|
92
95
|
}
|
93
96
|
]
|
@@ -3,6 +3,7 @@ const path = require('path');
|
|
3
3
|
const webpack = require('webpack');
|
4
4
|
const chokidar = require('chokidar');
|
5
5
|
const OwlResolver = require('opal-webpack-loader/resolver'); // to resolve ruby files
|
6
|
+
const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin'); // to watch for added ruby files
|
6
7
|
|
7
8
|
module.exports = {
|
8
9
|
context: path.resolve(__dirname, '<%= opal_directory %>'),
|
@@ -33,7 +34,11 @@ module.exports = {
|
|
33
34
|
plugins: [
|
34
35
|
// both for hot reloading
|
35
36
|
new webpack.NamedModulesPlugin(),
|
36
|
-
new webpack.HotModuleReplacementPlugin()
|
37
|
+
new webpack.HotModuleReplacementPlugin(),
|
38
|
+
// watch for added files in opal dir
|
39
|
+
new ExtraWatchWebpackPlugin({
|
40
|
+
dirs: [ path.resolve(__dirname, '<%= opal_directory %>') ]
|
41
|
+
})
|
37
42
|
],
|
38
43
|
module: {
|
39
44
|
rules: [
|
@@ -49,10 +54,7 @@ module.exports = {
|
|
49
54
|
}
|
50
55
|
},
|
51
56
|
{
|
52
|
-
loader: "css-loader"
|
53
|
-
options: {
|
54
|
-
minimize: false // set to false to speed up hot reloads
|
55
|
-
}
|
57
|
+
loader: "css-loader"
|
56
58
|
},
|
57
59
|
{
|
58
60
|
loader: "sass-loader",
|
@@ -73,10 +75,7 @@ module.exports = {
|
|
73
75
|
}
|
74
76
|
},
|
75
77
|
{
|
76
|
-
loader: "css-loader"
|
77
|
-
options: {
|
78
|
-
minimize: false // set to false to speed up hot reloads
|
79
|
-
}
|
78
|
+
loader: "css-loader"
|
80
79
|
}
|
81
80
|
]
|
82
81
|
},
|
@@ -1,4 +1,5 @@
|
|
1
1
|
{
|
2
|
+
"private": true,
|
2
3
|
"dependencies": {
|
3
4
|
},
|
4
5
|
"scripts": {
|
@@ -9,7 +10,13 @@
|
|
9
10
|
"devDependencies": {
|
10
11
|
"chokidar": "^2.1.5",
|
11
12
|
"compression-webpack-plugin": "^2.0.0",
|
13
|
+
"css-loader": "^2.1.1",
|
14
|
+
"extra-watch-webpack-plugin": "^1.0.3",
|
15
|
+
"file-loader": "^1.1.11",
|
12
16
|
"opal-webpack-loader": "^<%= owl_version %>",
|
17
|
+
"node-sass": "^4.12.0",
|
18
|
+
"sass-loader": "^7.1.0",
|
19
|
+
"style-loader": "^0.23.1",
|
13
20
|
"webpack": "^4.30.0",
|
14
21
|
"webpack-cli": "^3.3.0",
|
15
22
|
"webpack-dev-server": "^3.3.1",
|
@@ -61,21 +61,7 @@ module.exports = {
|
|
61
61
|
{
|
62
62
|
// loader for .css files
|
63
63
|
test: /.css$/,
|
64
|
-
use: [
|
65
|
-
{
|
66
|
-
loader: "style-loader",
|
67
|
-
options: {
|
68
|
-
hmr: false
|
69
|
-
}
|
70
|
-
},
|
71
|
-
{
|
72
|
-
loader: "css-loader",
|
73
|
-
options: {
|
74
|
-
sourceMap: false, // set to false to speed up hot reloads
|
75
|
-
minimize: true // set to false to speed up hot reloads
|
76
|
-
}
|
77
|
-
}
|
78
|
-
]
|
64
|
+
use: [ "style-loader", "css-loader" ]
|
79
65
|
},
|
80
66
|
{
|
81
67
|
test: /.(png|svg|jpg|gif)$/,
|
data/spec/installer_spec.rb
CHANGED
@@ -22,7 +22,6 @@ RSpec.describe 'owl installer' do
|
|
22
22
|
arg_val = %w[rails]
|
23
23
|
expect(Dir.exist?(File.join('railing', 'config', 'webpack'))).to be false
|
24
24
|
OpalWebpackLoader::Installer::CLI.start(arg_val)
|
25
|
-
|
26
25
|
expect(File.exist?(File.join('app', 'assets', 'javascripts', 'application.js'))).to be true
|
27
26
|
expect(File.exist?(File.join('app', 'assets', 'javascripts', 'application.js_owl_new'))).to be true
|
28
27
|
expect(File.exist?(File.join('app', 'assets', 'javascripts', 'application_common.js'))).to be true
|
@@ -44,7 +43,6 @@ RSpec.describe 'owl installer' do
|
|
44
43
|
arg_val = %w[rails -o hyperhyper]
|
45
44
|
expect(Dir.exist?(File.join('railing', 'config', 'webpack'))).to be false
|
46
45
|
OpalWebpackLoader::Installer::CLI.start(arg_val)
|
47
|
-
|
48
46
|
expect(File.exist?(File.join('app', 'assets', 'javascripts', 'application.js'))).to be true
|
49
47
|
expect(File.exist?(File.join('app', 'assets', 'javascripts', 'application.js_owl_new'))).to be true
|
50
48
|
expect(File.exist?(File.join('app', 'assets', 'javascripts', 'application_common.js'))).to be true
|
@@ -80,12 +78,14 @@ RSpec.describe 'owl installer' do
|
|
80
78
|
Dir.chdir('flattering')
|
81
79
|
arg_val = %w[flat]
|
82
80
|
OpalWebpackLoader::Installer::CLI.start(arg_val)
|
81
|
+
expect(File.exist?(File.join('styles', 'application.css'))).to be true
|
83
82
|
expect(File.exist?(File.join('javascripts', 'application.js'))).to be true
|
84
83
|
expect(File.exist?(File.join('javascripts', 'application_common.js'))).to be true
|
85
84
|
expect(File.exist?(File.join('javascripts', 'application_debug.js'))).to be true
|
86
85
|
expect(File.exist?(File.join('javascripts', 'application_ssr.js'))).to be true
|
87
86
|
expect(File.exist?(File.join('opal', 'opal_loader.rb'))).to be true
|
88
87
|
expect(File.exist?(File.join('owl_init.rb'))).to be true
|
88
|
+
expect(File.exist?(File.join('app_loader.rb'))).to be true
|
89
89
|
expect(File.exist?(File.join('webpack', 'debug.js'))).to be true
|
90
90
|
expect(File.exist?(File.join('webpack', 'development.js'))).to be true
|
91
91
|
expect(File.exist?(File.join('webpack', 'production.js'))).to be true
|
data/spec/owl_spec.rb
CHANGED
@@ -2,15 +2,20 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
RSpec.describe 'owl' do
|
4
4
|
context 'in a rails app' do
|
5
|
+
before :all do
|
6
|
+
`npm pack`
|
7
|
+
end
|
8
|
+
|
5
9
|
before do
|
6
10
|
Dir.chdir('spec')
|
7
11
|
Dir.chdir('test_apps')
|
8
12
|
FileUtils.rm_rf('railing') if Dir.exist?('railing')
|
13
|
+
`yarn cache clean`
|
9
14
|
end
|
10
15
|
|
11
16
|
after do
|
12
17
|
Dir.chdir('..') if Dir.pwd.end_with?('railing')
|
13
|
-
FileUtils.rm_rf('railing') if Dir.exist?('railing')
|
18
|
+
# FileUtils.rm_rf('railing') if Dir.exist?('railing')
|
14
19
|
Dir.chdir('..')
|
15
20
|
Dir.chdir('..')
|
16
21
|
end
|
@@ -31,6 +36,11 @@ RSpec.describe 'owl' do
|
|
31
36
|
|
32
37
|
GEMS
|
33
38
|
File.write('Gemfile', gemfile)
|
39
|
+
# add local owl npm package
|
40
|
+
package_json = Oj.load(File.read('package.json'), mode: :strict)
|
41
|
+
package_json["devDependencies"].delete("opal-webpack-loader")
|
42
|
+
File.write('package.json', Oj.dump(package_json, mode: :strict))
|
43
|
+
`yarn add file:../../../opal-webpack-loader-#{OpalWebpackLoader::VERSION}.tgz --dev`
|
34
44
|
`yarn install`
|
35
45
|
# bundler set some environment things, but we need a clean environment, so things don't get mixed up, use env
|
36
46
|
`env -i PATH="#{ENV['PATH']}" bundle install`
|
@@ -44,15 +54,20 @@ RSpec.describe 'owl' do
|
|
44
54
|
end
|
45
55
|
|
46
56
|
context 'in a roda app' do
|
57
|
+
before :all do
|
58
|
+
`npm pack`
|
59
|
+
end
|
60
|
+
|
47
61
|
before do
|
48
62
|
Dir.chdir('spec')
|
49
63
|
Dir.chdir('test_apps')
|
50
64
|
FileUtils.rm_rf('flattering') if Dir.exist?('flattering')
|
65
|
+
`yarn cache clean`
|
51
66
|
end
|
52
67
|
|
53
68
|
after do
|
54
69
|
Dir.chdir('..') if Dir.pwd.end_with?('flattering')
|
55
|
-
FileUtils.rm_rf('flattering') if Dir.exist?('flattering')
|
70
|
+
#FileUtils.rm_rf('flattering') if Dir.exist?('flattering')
|
56
71
|
Dir.chdir('..')
|
57
72
|
Dir.chdir('..')
|
58
73
|
end
|
@@ -72,6 +87,11 @@ RSpec.describe 'owl' do
|
|
72
87
|
|
73
88
|
GEMS
|
74
89
|
File.write('Gemfile', gemfile)
|
90
|
+
# add local owl npm package
|
91
|
+
package_json = Oj.load(File.read('package.json'), mode: :strict)
|
92
|
+
package_json["devDependencies"].delete("opal-webpack-loader")
|
93
|
+
File.write('package.json', Oj.dump(package_json, mode: :strict))
|
94
|
+
`yarn add file:../../../opal-webpack-loader-#{OpalWebpackLoader::VERSION}.tgz --dev`
|
75
95
|
`yarn install`
|
76
96
|
# bundler set some environment things, but we need a clean environment, so things don't get mixed up, use env
|
77
97
|
`env -i PATH="#{ENV['PATH']}" bundle install`
|
data/spec/spec_helper.rb
CHANGED
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.6.
|
4
|
+
version: 0.6.5
|
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-04-
|
11
|
+
date: 2019-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -155,6 +155,7 @@ files:
|
|
155
155
|
- lib/opal-webpack-loader/rails_view_helper.rb
|
156
156
|
- lib/opal-webpack-loader/templates/Procfile.erb
|
157
157
|
- lib/opal-webpack-loader/templates/app_loader.rb.erb
|
158
|
+
- lib/opal-webpack-loader/templates/application.css.erb
|
158
159
|
- lib/opal-webpack-loader/templates/application.js.erb
|
159
160
|
- lib/opal-webpack-loader/templates/application_common.js.erb
|
160
161
|
- lib/opal-webpack-loader/templates/application_debug.js.erb
|