jekyll-assets 0.2.0 → 0.2.1

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.
data/README.md CHANGED
@@ -6,8 +6,8 @@
6
6
 
7
7
  Jekyll plugin, that adds Rails-alike assets pipeline, that means that:
8
8
 
9
- - It allows you to write these assets in other languages such as CoffeeScript,
10
- Sass, Less and ERB.
9
+ - It allows you to write javascript/css assets in other languages such as
10
+ CoffeeScript, Sass, Less and ERB.
11
11
  - It allows you to specify dependencies between your assets and automatically
12
12
  concatenates them.
13
13
  - It allows you to minify/compress your JavaScript and CSS assets using
@@ -22,8 +22,8 @@ Jekyll-Assets uses fabulous [Sprockets][sprockets] under the hood, so you may
22
22
  refer to Rails guide about [Asset Pipeline][rails-guide] for detailed
23
23
  information about amazing features it gives you.
24
24
 
25
- *Notice:* You must have an [ExecJS][extjs] supported runtime in order to use
26
- CoffeeScript.
25
+ *Note:* You must have an [ExecJS][extjs] supported runtime in order to use
26
+ CoffeeScript.
27
27
 
28
28
 
29
29
  [rails-guide]: http://guides.rubyonrails.org/asset_pipeline.html
@@ -57,10 +57,10 @@ require "jekyll-assets"
57
57
 
58
58
  Once plugin installed, you'll have following liquid tags available:
59
59
 
60
- - `javascript app`: Generates `<script>` tag for `app.js`
61
- - `stylesheet app`: Generates `<link>` tag for `app.css`
62
- - `asset_path logo.png`: Returns _resulting_ URL for `logo.png`
63
- - `asset app.css`: Returns _compiled_ body of `app.css`
60
+ - `{% javascript app %}`: Generates `<script>` tag for `app.js`
61
+ - `{% stylesheet app %}`: Generates `<link>` tag for `app.css`
62
+ - `{% asset_path logo.png %}`: Returns _resulting_ URL for `logo.png`
63
+ - `{% asset app.css %}`: Returns _compiled_ body of `app.css`
64
64
 
65
65
  All compiled assets will be stored under `assets/` dir of generated site.
66
66
 
@@ -96,8 +96,8 @@ $(function () {
96
96
  });
97
97
  ```
98
98
 
99
- Now, if you want to use CoffeScript, just add `.coffee` suffix to the file you
100
- want and you good to go. For example, here's how your `app.js.coffe` might look
99
+ If you want to use CoffeScript, just add `.coffee` suffix to the file you want
100
+ and you're good to go. For example, here's how your `app.js.coffe` might look
101
101
  like:
102
102
 
103
103
  ``` coffeescript
@@ -107,7 +107,13 @@ $ ->
107
107
  alert 'I love BIG BOOKS! And small ones too!'
108
108
  ```
109
109
 
110
- Now, you might want your stylesheets and javascripts to be minified. In this
110
+ Notice, that `vendor/jquery` is not required to be coffee script. You can easily
111
+ mix CoffeeScript and vanilla JavaScript, CSS and SCSS and SASS and LESS. The
112
+ difference is only in comments styles used with _directives_.
113
+
114
+ See detailes information about these _directives_ below.
115
+
116
+ You might also want your stylesheets and javascripts to be minified. In this
111
117
  case just install `uglifier` gem and add following lines into your `config.yml`:
112
118
 
113
119
  ``` yaml
@@ -117,16 +123,15 @@ assets:
117
123
  css: sass
118
124
  ```
119
125
 
120
- You might want to use YUI compressor for minification. In this case install
121
- `yui-compressor` gem and put `yui` in place of `uglifier` and/or `sass` in the
122
- config file.
126
+ If you want to use YUI compressor for minification, install `yui-compressor`
127
+ gem and put `yui` in place of `uglifier` and/or `sass` in the config file.
123
128
 
124
129
  Let's go crazy now! Assume you want your blog's `body` background color to be
125
130
  white all the time, but red in December. Just add `.erb` suffix extension and
126
131
  you can use ruby to "pre-process" asset, something like this:
127
132
 
128
133
  ```
129
- # file: _assets/stylesheets/app.css.sass.erb
134
+ // file: _assets/stylesheets/app.css.sass.erb
130
135
 
131
136
  body
132
137
  background-color: <%= (12 == Date.today.month) ? "red" : "white" %>
@@ -153,6 +158,25 @@ $ ->
153
158
  info: "I love BIG BOOKS! And small ones too!"
154
159
  ```
155
160
 
161
+ Finally, you might want to store your assets on [Amazon S3][amazon-s3] or any
162
+ CDN service you like. As said previously, all compiled/processed assets got
163
+ special MD5 checksum appended to their original filenames. So, for example,
164
+ your `app.js.coffee` will become something like:
165
+
166
+ app-4f41243847da693a4f356c0486114bc6.js
167
+
168
+ By default, generated URLs will have `/assets/` prefixes, but you will want to
169
+ change this if you are going to host assets somewhere else. This can be easily
170
+ changed via configuration:
171
+
172
+ ``` yaml
173
+ assets:
174
+ baseurl: //my.super-cool-cdn.com/
175
+ ```
176
+
177
+ [amazon-s3]: http://aws.amazon.com/s3
178
+
179
+
156
180
  That's all. Feel free to ask questions if any on [twitter][twitter],
157
181
  [jabber][jabber] or [e-mail][e-mail].
158
182
 
@@ -161,6 +185,97 @@ That's all. Feel free to ask questions if any on [twitter][twitter],
161
185
  [e-mail]: mailto://ixti@member.fsf.org
162
186
 
163
187
 
188
+ ## The Directive Processor
189
+
190
+ *Note:* This section extracted from [Sprockets][sprockets] README.
191
+
192
+ Sprockets runs the *directive processor* on each CSS and JavaScript
193
+ source file. The directive processor scans for comment lines beginning
194
+ with `=` in comment blocks at the top of the file.
195
+
196
+ //= require jquery
197
+ //= require jquery-ui
198
+ //= require backbone
199
+ //= require_tree .
200
+
201
+ The first word immediately following `=` specifies the directive
202
+ name. Any words following the directive name are treated as
203
+ arguments. Arguments may be placed in single or double quotes if they
204
+ contain spaces, similar to commands in the Unix shell.
205
+
206
+ **Note**: Non-directive comment lines will be preserved in the final
207
+ asset, but directive comments are stripped after
208
+ processing. Sprockets will not look for directives in comment blocks
209
+ that occur after the first line of code.
210
+
211
+
212
+ ### Supported Comment Types
213
+
214
+ The directive processor understands comment blocks in three formats:
215
+
216
+ /* Multi-line comment blocks (CSS, SCSS, JavaScript)
217
+ *= require foo
218
+ */
219
+
220
+ // Single-line comment blocks (SCSS, JavaScript)
221
+ //= require foo
222
+
223
+ # Single-line comment blocks (CoffeeScript)
224
+ #= require foo
225
+
226
+
227
+ ### Sprockets Directives
228
+
229
+ You can use the following directives to declare dependencies in asset
230
+ source files.
231
+
232
+ For directives that take a *path* argument, you may specify either a
233
+ logical path or a relative path. Relative paths begin with `./` and
234
+ reference files relative to the location of the current file.
235
+
236
+ #### The `require` Directive
237
+
238
+ `require` *path* inserts the contents of the asset source file
239
+ specified by *path*. If the file is required multiple times, it will
240
+ appear in the bundle only once.
241
+
242
+ #### The `include` Directive
243
+
244
+ `include` *path* works like `require`, but inserts the contents of the
245
+ specified source file even if it has already been included or
246
+ required.
247
+
248
+ #### The `require_directory` Directive
249
+
250
+ `require_directory` *path* requires all source files of the same
251
+ format in the directory specified by *path*. Files are required in
252
+ alphabetical order.
253
+
254
+ #### The `require_tree` Directive
255
+
256
+ `require_tree` *path* works like `require_directory`, but operates
257
+ recursively to require all files in all subdirectories of the
258
+ directory specified by *path*.
259
+
260
+ #### The `require_self` Directive
261
+
262
+ `require_self` tells Sprockets to insert the body of the current
263
+ source file before any subsequent `require` or `include` directives.
264
+
265
+ #### The `depend_on` Directive
266
+
267
+ `depend_on` *path* declares a dependency on the given *path* without
268
+ including it in the bundle. This is useful when you need to expire an
269
+ asset's cache in response to a change in another file.
270
+
271
+ #### The `stub` Directive
272
+
273
+ `stub` *path* allows dependency to be excluded from the asset bundle.
274
+ The *path* must be a valid asset and may or may not already be part
275
+ of the bundle. Once stubbed, it is blacklisted and can't be brought
276
+ back by any other `require`.
277
+
278
+
164
279
  ## Configuration
165
280
 
166
281
  You can fine-tune configuration by editing your `_config.yml`:
@@ -6,10 +6,14 @@ Gem::Specification.new do |gem|
6
6
  gem.name = "jekyll-assets"
7
7
  gem.version = Jekyll::AssetsPlugin::VERSION
8
8
  gem.homepage = "http://ixti.github.com/jekyll-assets"
9
- gem.authors = %w{Aleksey V Zapparov}
9
+ gem.authors = "Aleksey V Zapparov"
10
10
  gem.email = %w{ixti@member.fsf.org}
11
11
  gem.summary = "jekyll-assets-#{Jekyll::AssetsPlugin::VERSION}"
12
- gem.description = %q{Adds assets pipelines for Jekyll}
12
+ gem.description = <<-DESC
13
+ Jekyll plugin, that allows you to write javascript/css assets in
14
+ other languages such as CoffeeScript, Sass, Less and ERB, concatenate
15
+ them, respecting dependencies, minify and many more.
16
+ DESC
13
17
 
14
18
  gem.add_dependency "jekyll"
15
19
  gem.add_dependency "sprockets", "~> 2.8"
@@ -45,8 +45,8 @@ module Jekyll
45
45
 
46
46
  def == other
47
47
  case other
48
- when AssetFile then other.asset.logical_path == asset.logical_path
49
- when Sprockets::Asset then other.logical_path == asset.logical_path
48
+ when AssetFile then same_asset? other.asset
49
+ when Sprockets::Asset then same_asset? other
50
50
  else false
51
51
  end
52
52
  end
@@ -54,6 +54,12 @@ module Jekyll
54
54
  def to_s
55
55
  "#<Jekyll::AssetsPlugin::AssetFile:#{asset.logical_path}>"
56
56
  end
57
+
58
+ protected
59
+
60
+ def same_asset? other
61
+ other.pathname.cleanpath == asset.pathname.cleanpath
62
+ end
57
63
  end
58
64
  end
59
65
  end
@@ -26,15 +26,15 @@ module Jekyll
26
26
  @assets.css_compressor = assets_config.css_compressor
27
27
 
28
28
  # bind jekyll and Sprockets context together
29
- @assets.context_class.instance_variable_set :@jekyll_site, self
29
+ @assets.context_class.instance_variable_set :@site, self
30
30
 
31
31
  @assets.context_class.class_eval do
32
- def jekyll_site
33
- self.class.instance_variable_get :@jekyll_site
32
+ def site
33
+ self.class.instance_variable_get :@site
34
34
  end
35
35
 
36
36
  def asset_baseurl
37
- jekyll_site.assets_config.baseurl.chomp "/"
37
+ site.assets_config.baseurl.chomp "/"
38
38
  end
39
39
 
40
40
  def asset_path(path, options = {})
@@ -42,8 +42,8 @@ module Jekyll
42
42
  raise AssetFile::NotFound, "couldn't find file '#{path}'"
43
43
  end
44
44
 
45
- unless jekyll_site.static_files.include? asset
46
- jekyll_site.static_files << AssetFile.new(jekyll_site, asset)
45
+ unless site.static_files.include? asset
46
+ site.static_files << AssetFile.new(site, asset)
47
47
  end
48
48
 
49
49
  "#{asset_baseurl}/#{asset.digest_path}".squeeze "/"
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module AssetsPlugin
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,17 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Aleksey
9
- - V
10
- - Zapparov
8
+ - Aleksey V Zapparov
11
9
  autorequire:
12
10
  bindir: bin
13
11
  cert_chain: []
14
- date: 2012-12-28 00:00:00.000000000 Z
12
+ date: 2012-12-31 00:00:00.000000000 Z
15
13
  dependencies:
16
14
  - !ruby/object:Gem::Dependency
17
15
  name: jekyll
@@ -109,7 +107,9 @@ dependencies:
109
107
  - - ! '>='
110
108
  - !ruby/object:Gem::Version
111
109
  version: '0'
112
- description: Adds assets pipelines for Jekyll
110
+ description: ! " Jekyll plugin, that allows you to write javascript/css assets in\n
111
+ \ other languages such as CoffeeScript, Sass, Less and ERB, concatenate\n them,
112
+ respecting dependencies, minify and many more.\n"
113
113
  email:
114
114
  - ixti@member.fsf.org
115
115
  executables: []
@@ -172,7 +172,7 @@ rubyforge_project:
172
172
  rubygems_version: 1.8.23
173
173
  signing_key:
174
174
  specification_version: 3
175
- summary: jekyll-assets-0.2.0
175
+ summary: jekyll-assets-0.2.1
176
176
  test_files:
177
177
  - spec/fixtures/.gitignore
178
178
  - spec/fixtures/_assets/app.css.erb