front_end_tasks 0.3.0 → 0.4.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: 94d3d5d02a661a985ad05031f76398c546a5a69f
4
- data.tar.gz: 0a1ed23f81f1fa0ea2ed8fc504164c05eb8d53ce
3
+ metadata.gz: a06d3aff4225bea249054d163b33821180ececb3
4
+ data.tar.gz: 2dfdb555c52124b0e13241fe76fd73ad92fe9891
5
5
  SHA512:
6
- metadata.gz: 73b819576fc8e3ecdc3a9b140bbe93f3fe154e3097da63765c5091d3946d44072a9e8531f4a282af79d25b59fa94d6ee4ac61601fe04b0fd11126a48b477e954
7
- data.tar.gz: c2c2b2d288e57e9516fda1779540529dfa36df7b46200fd128ef1343a3a8cb478fe740de9f7ec6fa619599ce29dcbd8fc4cc6b84df319d35db0d2f3231b59adf
6
+ metadata.gz: 6c78571a36ab37144b6e18656f9ff013cec6c53e6e1c890128e43ea7d02a633c44988a634d3947910fe91f4a93064688b436ad98eaaeac91ccca8cc61fcc99dd
7
+ data.tar.gz: 8f13b0ce944507e5d7aaa8f2d4add250cda42c787ca9cd041d6f59bfedd437f4bbb6315d658290848e1109b386bb6079209217745cd66eb7f68ef171114fc092
data/README.md CHANGED
@@ -129,6 +129,76 @@ The above becomes
129
129
 
130
130
  Note: Only link tags that reference local urls are allowed between build:style and /build html comments.
131
131
 
132
+ ## HTML Script Target Attributes
133
+
134
+ The build command accepts a `src_targets` option. It is useful for including certain versions of a script. For example, Ember.js comes with a development version with debugging tools and a lighter weight production version. We can include Ember into our HTML like this:
135
+
136
+ ```html
137
+ <script src="ember.js"
138
+ build-production-src="ember.prod.js"></script>
139
+ ```
140
+
141
+ By default, we use the `ember.js` development version by specifying it with the `src` attribute. To build for production we can pass the `src_targets` option to the build command
142
+
143
+ ```bash
144
+ $ fe build path/to/public_dir path/to/public_dir/index.html --src_targets=production
145
+ ```
146
+
147
+ ```ruby
148
+ FrontEndTasks.build('path/to/public_dir', './build', ['path/to/public_dir/index.html'], :src_targets => ['production'])
149
+ ```
150
+
151
+ It is possible to specify multiple `src_targets`.
152
+
153
+ ### Target specific script
154
+
155
+ The `src` attribute may be omitted if it is only relevant for a target. This is useful for including a script for a test target only.
156
+
157
+ ```html
158
+ <script build-test-src="tests/app_tests.js"></script>
159
+ ```
160
+
161
+ The above script is not included in development (since the `src` is not specified), but it can be included when running the build command with `test` included in `src_targets`.
162
+
163
+ ### Full example
164
+
165
+ ```html
166
+ <script src="ember.js"
167
+ build-production-src="ember.prod.js"></script>
168
+ <script src="config/development.js"
169
+ build-bitcoin-mainnet-src="config/bitcoin_mainnet.js"
170
+ build-bitcoin-testnet-src="config/bitcoin_testnet.js"></script>
171
+ <script build-test-src="tests/app_tests.js"></script>
172
+ ```
173
+
174
+ The following combination of `src_targets` will include the specified scripts.
175
+
176
+ #### No src_targets
177
+
178
+ * ember.js
179
+ * config/development.js
180
+
181
+ #### src_targets=production
182
+
183
+ * ember.prod.js
184
+ * config/development.js
185
+
186
+ #### src_targets=production bitcoin-mainnet
187
+
188
+ * ember.prod.js
189
+ * config/bitcoin_mainnet.js
190
+
191
+ #### src_targets=bitcoin-testnet
192
+
193
+ * ember.js
194
+ * config/bitcoin_testnet.js
195
+
196
+ #### src_targets=test
197
+
198
+ * ember.js
199
+ * config/development.js
200
+ * tests/app_tests.js
201
+
132
202
  ## External References
133
203
 
134
204
  The build command will find any references to other files in the project and include them in the resulting build.
@@ -8,6 +8,7 @@ module FrontEndTasks
8
8
  desc "build", "Builds the given files according to special build comments"
9
9
  method_option :js_concat_only, :type => :boolean
10
10
  method_option :result, :default => File.expand_path('./build')
11
+ method_option :src_targets, :type => :array
11
12
  def build(public_dir, *files)
12
13
  FrontEndTasks.build(public_dir, options[:result], files, options)
13
14
  end
@@ -14,8 +14,9 @@ module FrontEndTasks
14
14
 
15
15
  def compile(opts = {})
16
16
  path_content_pairs = {}
17
+ src_targets = opts[:src_targets] || []
17
18
 
18
- script_groups.each do |group|
19
+ script_groups(src_targets).each do |group|
19
20
  combined_content = group[:files].inject('') { |content, file| content << File.read(file) }
20
21
  combined_file_path = group[:combined_file_path]
21
22
  js_document = JsDocument.new(@public_root, combined_content)
@@ -80,10 +81,18 @@ module FrontEndTasks
80
81
 
81
82
  protected
82
83
 
83
- def script_groups
84
+ def script_groups(src_targets)
85
+ src_target_attributes = src_targets.map { |t| "build-#{t}-src" }
84
86
  groups = groups_matching_opening_comment(/\s?build:script (\S+)\s?$/, :tag_name => 'script')
85
87
  groups.each do |group|
86
- group[:files] = group[:elements].map { |e| File.join(@public_root, e[:src]) }
88
+ group[:files] = group[:elements].map do |element|
89
+ src = src_target_attributes.detect { |attribute| element.attribute(attribute) } || 'src'
90
+ if element[src]
91
+ File.join(@public_root, element[src])
92
+ else
93
+ nil
94
+ end
95
+ end.compact
87
96
  group[:combined_file_path] = group[:args][0]
88
97
  end
89
98
  groups
@@ -5,6 +5,7 @@ module FrontEndTasks
5
5
  include WEBrick
6
6
 
7
7
  def self.start(opts)
8
+ HTTPUtils::DefaultMimeTypes.store('manifest', 'text/cache-manifest')
8
9
  server = HTTPServer.new(:Port => opts[:port], :DocumentRoot => opts[:public_dir])
9
10
  trap("INT") { server.shutdown }
10
11
  server.start
@@ -1,3 +1,3 @@
1
1
  module FrontEndTasks
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: front_end_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Enriquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-30 00:00:00.000000000 Z
11
+ date: 2014-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler