webpackrails 1.2.1 → 2.0.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
  SHA1:
3
- metadata.gz: ac83e262268d1816d547247a9eec0480285bf520
4
- data.tar.gz: 080011e89f3fd26a3072928c7da610f99f59d05f
3
+ metadata.gz: cbba3cde0af91cb39ec6bbb53d0ca0fadf6b1dae
4
+ data.tar.gz: fcc9d57ef318cb5a002bedd665af6cf6e48e2705
5
5
  SHA512:
6
- metadata.gz: 5e15a9b6c124910906e1c328149608f34ad0900e5858d283defbcd1334af3b7fe1cdf8ed762258e8c3ae480fdddf1a1d7051c3a77965da2d8b6124ec007a9706
7
- data.tar.gz: 4165a1f61212555c4768b45da71627a39d7c97ee9569ac8b486347a036ad0f7a71c0c5848a1d256aa5996e844c9aa07a7b78b6de683debd5906371cc66424cdb
6
+ metadata.gz: 030c57346ad4ad4db817b8464aa5340aaac7408ef4d193582ca70f98c7bb53a3b007c5a4158f7b4676c14f94003d502322af658436d5dff2449b84622f0c58da
7
+ data.tar.gz: b57c2071bec71224024d03d81066816d36229a1ed922ccc8d21cfc7a3911c6b5b8fa9856b0c8c923eff115f11ac1bff3835b58a1d30d352a4a6d96b254b59040
data/README.md CHANGED
@@ -63,10 +63,18 @@ module.exports = {
63
63
 
64
64
  [Wiki troubleshooting](https://github.com/towry/webpackrails/wiki/Troubleshooting)
65
65
 
66
- ### Config
66
+
67
+ ## Feature
68
+
69
+ * Support embedding erb in javascript, see [troubleshooting](https://github.com/towry/webpackrails/wiki/Troubleshooting) page. **Aug 16, 2015**
70
+ * Support es6 (just use webpack babel loader)
71
+ * Support react jsx syntax (just use webpack babel loader)
72
+
73
+ ## Config
67
74
 
68
75
  See [source](https://raw.githubusercontent.com/towry/webpackrails/master/lib/webpackrails/railtie.rb)
69
76
 
77
+
70
78
  ## Development
71
79
 
72
80
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -19,12 +19,15 @@ module WebpackRails
19
19
  # ignore node_modules
20
20
  config.webpackrails.ignore_node_modules = true
21
21
 
22
+ # embed erb
23
+ config.webpackrails.embed_erb = false
24
+
22
25
  # array of string to test if the file need to be process by this gem.
23
26
  # see `commonjs_module?` method
24
27
  config.webpackrails.force_condition = []
25
28
 
26
29
  initializer :setup_webpack do |app|
27
- app.assets.register_preprocessor "application/javascript", WebpackRails::WebpackProcessor
30
+ app.assets.register_postprocessor "application/javascript", WebpackRails::WebpackProcessor
28
31
  end
29
32
 
30
33
  rake_tasks do
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module WebpackRails
4
- VERSION = "1.2.1"
4
+ VERSION = "2.0.0"
5
5
  end
@@ -5,6 +5,7 @@ require 'open3'
5
5
  require 'tempfile'
6
6
  require 'fileutils'
7
7
  require 'shellwords'
8
+ require 'digest/sha1'
8
9
 
9
10
  module WebpackRails
10
11
  class WebpackProcessor < Tilt::Template
@@ -25,17 +26,51 @@ module WebpackRails
25
26
  # return if there is nothing to do
26
27
  return data unless should_webpack?
27
28
 
28
- evaluated = run_webpack(context.pathname || context.logical_path)
29
+ if config.embed_erb
30
+ run_webpack(context.pathname || context.logical_path, false)
29
31
 
30
- evaluate_dependencies(context.environment.paths).each do |path|
31
- context.depend_on(path.to_s)
32
- end
32
+ evaluate_dependencies(context.environment.paths).each do |path|
33
+ context.depend_on(path.to_s)
34
+ end
35
+
36
+ if !@erb_deps.empty?
37
+ evaluate_erb_deps(context, locals)
38
+ end
33
39
 
40
+ evaluated = run_webpack(context.pathname || context.logical_path)
41
+ else
42
+ evaluated = run_webpack(context.pathname || context.logical_path)
43
+ evaluate_dependencies(context.environment.paths).each do |path|
44
+ context.depend_on(path.to_s)
45
+ end
46
+ end
47
+
34
48
  evaluated
35
49
  end
36
50
 
37
51
  private
38
52
 
53
+ def evaluate_erb_deps(context, locals)
54
+ return if @erb_deps.empty?
55
+
56
+ # dep is a path
57
+ @erb_deps.each do |dep|
58
+ begin
59
+ shaname = sha1(dep)
60
+ tmpfile = File.join(@erb_deps_root, shaname)
61
+ template = Tilt::ERBTemplate.new(dep)
62
+ template = template.render(context, locals)
63
+ file = File.open(tmpfile, 'w')
64
+ file.write(template)
65
+ file.close()
66
+ end
67
+ end
68
+ end
69
+
70
+ def sha1(content)
71
+ Digest::SHA1.hexdigest content
72
+ end
73
+
39
74
  # Set the temp path
40
75
  def tmp_path
41
76
  @tmp_path ||= Rails.root.join('tmp', 'cache', 'webpackrails').freeze
@@ -50,13 +85,20 @@ module WebpackRails
50
85
  def ensure_tmp_dir_exists!
51
86
  FileUtils.mkdir_p(rails_path(tmp_path))
52
87
  @deps_path ||= File.join(tmp_path, '_$webpackrails_dependencies');
88
+ @erb_deps_root ||= rails_path('tmp/cache/webpackrails/erbs').freeze
89
+
90
+ FileUtils.mkdir_p(@erb_deps_root)
53
91
  end
54
92
 
55
- # Filter out node_module/ files
93
+ # Filter out node_module/ files and erb files.
56
94
  def evaluate_dependencies(asset_paths)
57
- return dependencies if !config.ignore_node_modules
95
+ return dependencies if !config.ignore_node_modules and !config.embed_erb
58
96
 
59
- dependencies.select do |path|
97
+ @erb_deps = []
98
+ deps = dependencies.select do |path|
99
+ if File.extname(path) == '.erb'
100
+ @erb_deps << path
101
+ end
60
102
  path.start_with?(*asset_paths)
61
103
  end
62
104
  end
@@ -150,8 +192,13 @@ module WebpackRails
150
192
  false
151
193
  end
152
194
 
153
- def run_webpack(logical_path=nil)
154
- command_options = "--colors --config #{@config_file} #{logical_path} --bail --output-filename"
195
+ def run_webpack(logical_path=nil, bail= true)
196
+ if bail
197
+ command_options = "--colors --config #{@config_file} #{logical_path} --bail --output-filename"
198
+ else
199
+ command_options = "--colors --config #{@config_file} #{logical_path} --output-filename"
200
+ end
201
+
155
202
  output_file = Tempfile.new("output", rails_path(tmp_path))
156
203
  command_options << " #{output_file.path.inspect}"
157
204
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webpackrails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - towry
@@ -14,98 +14,98 @@ dependencies:
14
14
  name: railties
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sprockets
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.3'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: tilt
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Webpack + Rails ≠ CommonJS Heaven
@@ -115,7 +115,7 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - ".gitignore"
118
+ - .gitignore
119
119
  - CODE_OF_CONDUCT.md
120
120
  - Gemfile
121
121
  - LICENSE.txt
@@ -142,12 +142,12 @@ require_paths:
142
142
  - lib
143
143
  required_ruby_version: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - ">="
145
+ - - '>='
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  requirements: []