jekyll-assets 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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