linner-hc 1.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 +7 -0
- data/.gitignore +19 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/CHANGELOG +129 -0
- data/Gemfile +14 -0
- data/LICENSE +22 -0
- data/README.md +74 -0
- data/Rakefile +8 -0
- data/bin/linner +11 -0
- data/docs/commands.md +29 -0
- data/docs/config.md +192 -0
- data/lib/linner.rb +261 -0
- data/lib/linner/archive.rb +53 -0
- data/lib/linner/asset.rb +102 -0
- data/lib/linner/bundler.rb +85 -0
- data/lib/linner/cache.rb +19 -0
- data/lib/linner/command.rb +133 -0
- data/lib/linner/compressor.rb +17 -0
- data/lib/linner/environment.rb +76 -0
- data/lib/linner/helper.rb +39 -0
- data/lib/linner/notifier.rb +24 -0
- data/lib/linner/reactor.rb +87 -0
- data/lib/linner/sprite.rb +127 -0
- data/lib/linner/template.rb +77 -0
- data/lib/linner/templates/app/images/.gitkeep +0 -0
- data/lib/linner/templates/app/images/logo.png +0 -0
- data/lib/linner/templates/app/scripts/app.coffee +3 -0
- data/lib/linner/templates/app/styles/app.scss +1 -0
- data/lib/linner/templates/app/templates/welcome.hbs +1 -0
- data/lib/linner/templates/app/views/index.html +21 -0
- data/lib/linner/templates/bin/server +3 -0
- data/lib/linner/templates/config.yml +54 -0
- data/lib/linner/templates/public/.gitkeep +1 -0
- data/lib/linner/templates/test/.gitkeep +0 -0
- data/lib/linner/templates/vendor/.gitkeep +1 -0
- data/lib/linner/version.rb +3 -0
- data/lib/linner/wrapper.rb +39 -0
- data/linner.gemspec +35 -0
- data/linner.gemspec.bak +34 -0
- data/spec/fixtures/app.js +1 -0
- data/spec/fixtures/config.yml +30 -0
- data/spec/linner/asset_spec.rb +33 -0
- data/spec/linner/bundler_spec.rb +26 -0
- data/spec/linner/environment_spec.rb +22 -0
- data/spec/linner/helper_spec.rb +26 -0
- data/spec/linner/sprites_spec.rb +23 -0
- data/spec/linner/template_spec.rb +16 -0
- data/spec/linner/wrapper_spec.rb +20 -0
- data/spec/spec_helper.rb +11 -0
- data/vendor/config.default.yml +13 -0
- data/vendor/livereload.js +1055 -0
- data/vendor/require_definition.js +60 -0
- metadata +289 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 384e3cd98fa686c846ada7147303cf9018a58d11
|
4
|
+
data.tar.gz: 0047e7c8a86c3c7a562413d7c46fc58d5a8d9e3e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 637d2f731536872a2dd9233b49938332ca202fc5d3b62b2901ea8293b60d3dc6e5593390e1403e5edda81c215fdcc73b3c1313e01eed463864cc88fbabeeb8a1
|
7
|
+
data.tar.gz: ca4d4ef325d82fab42452de04a9cf1396563786bbf8b909eee0fb379154bef5275512b07788a60e46d8cfb41cbf96d63f29fa69057955f8d0f4140eef9d29b2f
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
v0.11.1
|
2
|
+
- bump babel version to v0.7
|
3
|
+
- return non-zero code when build failed
|
4
|
+
|
5
|
+
v0.11.0
|
6
|
+
- supports `es6` and react `jsx` by babel
|
7
|
+
|
8
|
+
v0.10.0
|
9
|
+
- introducing new directive `compile` and `context` to compile files
|
10
|
+
|
11
|
+
v0.9.1
|
12
|
+
- add .yml .yaml and .txt to Tilt templates
|
13
|
+
|
14
|
+
v0.9.0
|
15
|
+
- introducing environment for different environments
|
16
|
+
|
17
|
+
v0.8.7
|
18
|
+
- support CDN in revision plugin
|
19
|
+
|
20
|
+
v0.8.6
|
21
|
+
- always use binary mode on windows
|
22
|
+
|
23
|
+
v0.8.5
|
24
|
+
- fix a windows mime-type bug
|
25
|
+
|
26
|
+
v0.8.4
|
27
|
+
- fix the vendor path for bundles
|
28
|
+
- fix the sprite url config, now it's working again
|
29
|
+
|
30
|
+
v0.8.3
|
31
|
+
- fix a windows md5sum bug cause it calculate in text mode by default
|
32
|
+
|
33
|
+
v0.8.2
|
34
|
+
- fix a gzip mime-type bug in linux
|
35
|
+
|
36
|
+
v0.8.1
|
37
|
+
- `tar` now sub prefix with envrionment paths
|
38
|
+
|
39
|
+
v0.8.0
|
40
|
+
- updated all deps
|
41
|
+
- use rspec3 to replace the old test code
|
42
|
+
- bundles now support tar.gz file
|
43
|
+
- add a new directive `tar` to produce tar file
|
44
|
+
- remove the old default config entity `paths`, should always have `paths` in groups
|
45
|
+
|
46
|
+
v0.7.3
|
47
|
+
- fix a merge bug from the latest version
|
48
|
+
|
49
|
+
v0.7.2
|
50
|
+
- add a unstrict mode by default to replace the revision, change the original one to strict mode, use `-s` to trigger.
|
51
|
+
|
52
|
+
v0.7.1
|
53
|
+
- prevent multiple instance running error
|
54
|
+
|
55
|
+
v0.7.0
|
56
|
+
- lock the sass version to 3.2.19, cause compass not works perfectly with it
|
57
|
+
- remove Hpricot, use plain regex to support revision
|
58
|
+
- `revision` now is a hash, support `prefix`, move the `manifest` into `revision`, revision now has a `files` key
|
59
|
+
|
60
|
+
v0.6.7
|
61
|
+
- bypass a windows platform expand_path bug in ruby v2.0.0
|
62
|
+
|
63
|
+
v0.6.6
|
64
|
+
- lock the gem http to v0.5.0 and reel to 0.4.0
|
65
|
+
|
66
|
+
v0.6.5
|
67
|
+
- upgrade uglifier to 2.5.0 cause uglifier 2.2.0 has IE 8 compatibility issues
|
68
|
+
- upgrade handlebars.rb to 0.1.2 cause handlebars version updated to 1.3.0
|
69
|
+
|
70
|
+
v0.6.4
|
71
|
+
- copy task now support render and compress
|
72
|
+
- fix cache problem when same asset in different linner task
|
73
|
+
|
74
|
+
v0.6.3
|
75
|
+
- support sprite revision
|
76
|
+
|
77
|
+
v0.6.2
|
78
|
+
- fix bin-packing algo problem
|
79
|
+
- add auto reload environment support
|
80
|
+
- add native path bundle support
|
81
|
+
|
82
|
+
v0.6.1
|
83
|
+
- use `hpricot` to instead of `nokogiri`, because `nokogiri` has parse problem when `revision`
|
84
|
+
|
85
|
+
v0.6.0
|
86
|
+
- add sprites support
|
87
|
+
|
88
|
+
v0.5.1
|
89
|
+
- support handlebars partials. templates start with "_" will be treaded as partials/
|
90
|
+
|
91
|
+
v 0.5.0
|
92
|
+
- linner command now provides `check` and `install` commands to check and install vendor dependencies
|
93
|
+
|
94
|
+
v 0.4.6
|
95
|
+
- compat terminal-notifier with OS X mavericks
|
96
|
+
|
97
|
+
v 0.4.5
|
98
|
+
- bump reel version to 0.4.0
|
99
|
+
|
100
|
+
v 0.4.4
|
101
|
+
- glob pattern need to sort by alphabetically
|
102
|
+
|
103
|
+
v 0.4.3
|
104
|
+
- fix the last `/` in `logical_path`
|
105
|
+
- multiple revision file support
|
106
|
+
|
107
|
+
v 0.4.2
|
108
|
+
- use `sleep` to instead of `Process.wait`
|
109
|
+
|
110
|
+
v 0.4.1
|
111
|
+
- `manifest.yml` support
|
112
|
+
- lots of badges support
|
113
|
+
|
114
|
+
v 0.4.0
|
115
|
+
- revision support
|
116
|
+
- fix memory leak in `cache_miss?`
|
117
|
+
- quit `fsevent` process when `ctrl + c` triggered
|
118
|
+
|
119
|
+
v 0.3.2
|
120
|
+
- fix Celluiod logger bug
|
121
|
+
- suggest windows user to use jruby instead
|
122
|
+
|
123
|
+
v 0.3.1
|
124
|
+
- add `livereload` support
|
125
|
+
|
126
|
+
v 0.3.0
|
127
|
+
- add `compass` support
|
128
|
+
- cache now supports `styles`
|
129
|
+
- more readable config file
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Saito
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# Linner
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/linner) [](https://travis-ci.org/SaitoWu/linner) [](https://codeclimate.com/repos/520fd56e56b10241f50f15a3/feed) [](https://gemnasium.com/SaitoWu/linner)
|
4
|
+
|
5
|
+
Linner is a full-featured HTML5 application assembler.
|
6
|
+
|
7
|
+

|
8
|
+
|
9
|
+
#### Screencast
|
10
|
+
|
11
|
+
[](https://vimeo.com/71944672)
|
12
|
+
|
13
|
+
* Fast!
|
14
|
+
* Supports `Sass`, `Compass`, `Coffee`, `ECMAScript 6` and `React`.
|
15
|
+
* Supports OS X Lion and Mountaion Lion Notifications.
|
16
|
+
* Supports Modular Javascript, All your code will be wrapped by `cmd`.
|
17
|
+
* Supports `concat` code by `config file` not `directive processor`.
|
18
|
+
* Supports `copy` code from `src` to `dest`.
|
19
|
+
* Supports `precompile` Javascript Templates from `src` to `desc`.
|
20
|
+
* Supports `sprite` PNG images from `src` to `desc`.
|
21
|
+
* Supports `tar` files from `src` to `desc`.
|
22
|
+
* Supports Real-time `concat` by `$ linner watch`.
|
23
|
+
* Supports `compress` by `$ linner build`.
|
24
|
+
* Supports `LiveReload` with [LiveReload Chrome Extention](https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei).
|
25
|
+
|
26
|
+
#### Documents
|
27
|
+
|
28
|
+
[https://github.com/SaitoWu/linner/tree/master/docs](https://github.com/SaitoWu/linner/tree/master/docs)
|
29
|
+
|
30
|
+
## Requirements
|
31
|
+
|
32
|
+
#### *nix
|
33
|
+
|
34
|
+
* Ruby 2.0
|
35
|
+
|
36
|
+
#### Windows
|
37
|
+
|
38
|
+
* Install [Ruby](http://rubyinstaller.org/downloads/) and [DevKit](http://rubyinstaller.org/downloads/)
|
39
|
+
* Install gem `wdm`
|
40
|
+
* Install Node.js to make Linner faster
|
41
|
+
|
42
|
+
## Installation
|
43
|
+
|
44
|
+
$ gem install linner
|
45
|
+
|
46
|
+
## Usage
|
47
|
+
|
48
|
+
#### Skeleton
|
49
|
+
|
50
|
+
$ linner new webapp && cd webapp
|
51
|
+
|
52
|
+
#### Watch
|
53
|
+
|
54
|
+
$ linner watch
|
55
|
+
|
56
|
+
#### Server
|
57
|
+
|
58
|
+
$ ./bin/server # or server if put "./bin" in your PATH
|
59
|
+
|
60
|
+
#### Build
|
61
|
+
|
62
|
+
$ linner build
|
63
|
+
|
64
|
+
#### Clean
|
65
|
+
|
66
|
+
$ linner clean
|
67
|
+
|
68
|
+
## Contributing
|
69
|
+
|
70
|
+
1. Fork it
|
71
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
72
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
73
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
74
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/bin/linner
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Encoding.default_external = Encoding::UTF_8
|
4
|
+
Encoding.default_internal = Encoding::UTF_8
|
5
|
+
|
6
|
+
# Trap interrupts to quit cleanly. See
|
7
|
+
# https://twitter.com/mitchellh/status/283014103189053442
|
8
|
+
Signal.trap("INT") { abort }
|
9
|
+
|
10
|
+
require File.dirname(__FILE__) + "/../lib/linner"
|
11
|
+
Linner::Command.start
|
data/docs/commands.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Command
|
2
|
+
|
3
|
+
## `linner new <path>`
|
4
|
+
|
5
|
+
Create new brunch project.
|
6
|
+
|
7
|
+
## `linner check`
|
8
|
+
|
9
|
+
Check linner bundles
|
10
|
+
|
11
|
+
## `linner install`
|
12
|
+
|
13
|
+
Install linner bundles
|
14
|
+
|
15
|
+
## `linner watch`
|
16
|
+
|
17
|
+
Watch linner directory and rebuild if something changed.
|
18
|
+
|
19
|
+
## `linner build`
|
20
|
+
|
21
|
+
Build and Minify a linner project.
|
22
|
+
|
23
|
+
## `linner clean`
|
24
|
+
|
25
|
+
Clean up linner public folder.
|
26
|
+
|
27
|
+
## `server`
|
28
|
+
|
29
|
+
Start up a server at port 3000.
|
data/docs/config.md
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
# Configuration file
|
2
|
+
|
3
|
+
Linner use `config.yml` file to config your application.
|
4
|
+
|
5
|
+
## `paths`
|
6
|
+
|
7
|
+
`paths` defines application paths, it contains `app`, `test`, `vendor` and `public` folders.
|
8
|
+
|
9
|
+
Default:
|
10
|
+
|
11
|
+
```yaml
|
12
|
+
paths:
|
13
|
+
app: "app"
|
14
|
+
test: "test"
|
15
|
+
vendor: "vendor"
|
16
|
+
public: "public"
|
17
|
+
```
|
18
|
+
|
19
|
+
`linner watch` command will watch `app`, `test` and `vendor` folders, and the builded file will be in `public` folder.
|
20
|
+
|
21
|
+
## `groups`
|
22
|
+
|
23
|
+
`groups` defines application groups, you can define any type of groups in it.
|
24
|
+
|
25
|
+
Default:
|
26
|
+
|
27
|
+
```yaml
|
28
|
+
groups:
|
29
|
+
scripts:
|
30
|
+
paths:
|
31
|
+
- "app/scripts"
|
32
|
+
order:
|
33
|
+
- "vendor/jquery-1.10.2.js"
|
34
|
+
- "..."
|
35
|
+
styles:
|
36
|
+
paths:
|
37
|
+
- "app/styles"
|
38
|
+
images:
|
39
|
+
paths:
|
40
|
+
- "app/images"
|
41
|
+
views:
|
42
|
+
paths:
|
43
|
+
- "app/views"
|
44
|
+
```
|
45
|
+
|
46
|
+
the default configuration defines four groups: `scripts`, `styles`, `images` and `views` group.
|
47
|
+
|
48
|
+
`paths` defines where can linner find this group's files, It's a `Array`.
|
49
|
+
|
50
|
+
`concat` defines concatenation of files in Linner. the `Dir.glob` of `value` will be concat to `key` file.
|
51
|
+
|
52
|
+
`copy` defines copy strategy of files in Linner. The `Dir.glob` of `value` will be copy to `key` folder.
|
53
|
+
|
54
|
+
`compile` defines compile strategy of files in Linner. The `Dir.glob` of `value` will be compile to `key` folder.
|
55
|
+
|
56
|
+
`precompile` defines precompile strategy of javascript templates for Linner. The `Dir.glob` of `value` will be concat to `key`.
|
57
|
+
|
58
|
+
`sprite` defines sprite strategy of images for Linner. The `Dir.glob` of `value` will be sprite to `key`.
|
59
|
+
|
60
|
+
`tar` defines archive strategy of files in Linner. The `Dir.glob` of `value` will be archive to `key` file.
|
61
|
+
|
62
|
+
`context` defines the context of the `compile` files, and the value will pass to the render function.
|
63
|
+
|
64
|
+
`order` defines the order of this group files, and It's very useful when you `concat` your files. for example:
|
65
|
+
|
66
|
+
```yaml
|
67
|
+
order:
|
68
|
+
- "vendor/jquery-1.10.2.js"
|
69
|
+
- "..."
|
70
|
+
- "vendor/underscore.js"
|
71
|
+
```
|
72
|
+
|
73
|
+
In the above example, if a group contains 5 files, `vendor/jquery-1.10.2.js` will be the first, and `vendor/underscore.js` will be the last file.
|
74
|
+
|
75
|
+
## `sprites`
|
76
|
+
|
77
|
+
`sprites` defines application sprite stategy. `sprites` support pseudo class of css, if your file's basename end with `_active`, the generated css will be `.active`. if your file's basename end with `_hover`, the generated css will be `:hover`, eg: `arrow_hover.png` will be `.selector-arrow:hover { ... }`
|
78
|
+
|
79
|
+
Example:
|
80
|
+
|
81
|
+
```yaml
|
82
|
+
sprites:
|
83
|
+
# sprite image output path
|
84
|
+
path: "/images/"
|
85
|
+
# css selector
|
86
|
+
selector: ".icon-"
|
87
|
+
```
|
88
|
+
|
89
|
+
## `modules`
|
90
|
+
|
91
|
+
`modules` defines application module strategy, The default wrapper is `cmd`.
|
92
|
+
|
93
|
+
Default:
|
94
|
+
|
95
|
+
```yaml
|
96
|
+
modules:
|
97
|
+
wrapper: "cmd"
|
98
|
+
ignored: "vendor/**/*"
|
99
|
+
definition: "scripts/app.js"
|
100
|
+
```
|
101
|
+
|
102
|
+
All of your code will be wrapped by `cmd`(Common Module Definition) except `ignored` glob pattern.
|
103
|
+
|
104
|
+
The definition file will prepend to `definition` field, which will join with `public` folder.
|
105
|
+
|
106
|
+
## `revision`
|
107
|
+
|
108
|
+
`revision` defines application layout page, which contains `link` and `script` tags.
|
109
|
+
|
110
|
+
Default:
|
111
|
+
|
112
|
+
```yaml
|
113
|
+
revision:
|
114
|
+
prefix: "/public"
|
115
|
+
cdn: http://assets.yoursite.com
|
116
|
+
manifest: "manifest.yml"
|
117
|
+
files:
|
118
|
+
- "index.html"
|
119
|
+
```
|
120
|
+
|
121
|
+
the `prefix` will join with revision hashes.
|
122
|
+
|
123
|
+
the `cdn` will also join with revision hashes, so it will be like `http://assets.yoursite.com/public/assets/scripts/app.js`.
|
124
|
+
|
125
|
+
the `manifest` will join with `public` folder, write a manifest file with the name.
|
126
|
+
|
127
|
+
`index.html` will join with `public` folder. So, by default when you `build` your application, the `public/index.html` file will be rewrote with revision.
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
If you don't need `revision` support, it can be `false`.
|
132
|
+
|
133
|
+
## `notification`
|
134
|
+
|
135
|
+
`notification` defines application error notification.
|
136
|
+
|
137
|
+
Default:
|
138
|
+
|
139
|
+
```yaml
|
140
|
+
notification: true
|
141
|
+
```
|
142
|
+
|
143
|
+
## `bundles`
|
144
|
+
|
145
|
+
`bundles` defines application's library dependencies, the dependencies will be copied to `vendor` folder.
|
146
|
+
|
147
|
+
For example:
|
148
|
+
|
149
|
+
```yaml
|
150
|
+
bundles:
|
151
|
+
jquery.js:
|
152
|
+
version: 1.10.2
|
153
|
+
url: http://code.jquery.com/jquery-1.10.2.js
|
154
|
+
underscore.js:
|
155
|
+
version: 1.5.2
|
156
|
+
url: https://raw.github.com/jashkenas/underscore/1.5.2/underscore.js
|
157
|
+
backbone.js:
|
158
|
+
version: 1.1.0
|
159
|
+
url: https://raw.github.com/jashkenas/backbone/1.1.0/backbone.js
|
160
|
+
handlebars.js:
|
161
|
+
version: 1.0.0
|
162
|
+
url: https://raw.github.com/wycats/handlebars.js/1.0.0/dist/handlebars.js
|
163
|
+
```
|
164
|
+
|
165
|
+
bundles also supports `tar.gz` file on the internet, you should give it a try.
|
166
|
+
|
167
|
+
When you use `tar.gz` file, the key of bundle can be a folder name, all the archived files will be decompression to the folder.
|
168
|
+
|
169
|
+
|
170
|
+
## `environments`
|
171
|
+
|
172
|
+
`environments` defines application's running environment config, the default environment is `development`.
|
173
|
+
|
174
|
+
If you use `linner build` to build your webapp, the environment would be `production`.
|
175
|
+
|
176
|
+
For example:
|
177
|
+
|
178
|
+
```yaml
|
179
|
+
environments:
|
180
|
+
staging:
|
181
|
+
revision:
|
182
|
+
cdn: http://staging.yoursite.com
|
183
|
+
production:
|
184
|
+
revision:
|
185
|
+
cdn: http://production.yoursite.com
|
186
|
+
```
|
187
|
+
|
188
|
+
You can use `linner build -e staging` to use the staging environment's variables.
|
189
|
+
|
190
|
+
When you use `linner watch` to watch the project, it's equals to `linner watch -e development`, and the `development` environment is the default environment, you don't need to write it.
|
191
|
+
|
192
|
+
When you use `linner build` to build the project, it's equals to `linner build -e produciton`.
|