lux_assets 0.1.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cf0499416784b64eb2a3fc814ee2d8fc41a44695c053343a731f15ddcb44e682
4
+ data.tar.gz: ec17806130acc118a8401efaa522cb423ebef09727768343eec92214debf28b3
5
+ SHA512:
6
+ metadata.gz: c887341980224009f77a1261fbcdac1805d370082fc3808f3de564a2d5dabfc75ef3cfd9ee6028a55268695bd65bd5b4134eaa5f51554e959b00bdb882e39d47
7
+ data.tar.gz: e3af40781f0d76e3f005bbf1fa10fd487ae4801d56078157205518e98f73a5205c24d1047eacbfa93a30eeb57d403157ef0a76a94544b2fa70f53dab9408f97c
data/README.md ADDED
@@ -0,0 +1,140 @@
1
+ # Web assets
2
+
3
+ Lightweight web assets packer that loves simplicity.
4
+
5
+ * framework agnostic, use anywhere
6
+ * compiles js, coffee, typescript, css, sass "out of the box"
7
+ * keeps manifest in a single file
8
+ * plugable to handle any other extension
9
+ * update manifest file for production
10
+ * autoprefixer, minify, gzip the output
11
+ * add rake tasks
12
+
13
+ ## Instalation
14
+
15
+ Add `lux_assets` gem to `Gemfile` and then `bundle install`
16
+ ```
17
+ gem 'lux_assets'
18
+ ```
19
+
20
+ ## Using
21
+
22
+ To use the gem we have bin file in a path (build with Thor gem) named `lux_assets`.
23
+
24
+ ```
25
+ ~/dev/app $ lux_assets
26
+ Commands:
27
+ lux_assets clear # Clear all caches
28
+ lux_assets compile # Compile assets for production
29
+ lux_assets help [COMMAND] # Describe available commands or one specific command
30
+ lux_assets install # Install all needed packages via yarn
31
+ lux_assets show # Show all files/data in manifest
32
+ ```
33
+
34
+ 1. Start with `lux_assets install`
35
+ 2. Modify ./config/assets.rb
36
+ 3. Compile with `lux_assets compile`
37
+ 4. Inspect added files with `lux_assets show`
38
+
39
+ ### To compile
40
+
41
+ ```
42
+ ~/dev/app $ lux_assets compile
43
+ ~/dev/app $ rake assets:compile
44
+ Compile js/admin -> /assets/js-admin-d1b55490e6327ba81e60b24539c6086ee1fe5d48.js
45
+ Compile js/main -> /assets/js-main-a72368758567e466aa01643b1e7426120dbca65b.js
46
+ Compile css/admin -> /assets/css-admin-f486d0d464932a9da584289007d170695dce23ce.css
47
+ Compile css/main -> /assets/css-main-1b6d66a32ad6af5fd34edbe4369585be351790cd.css
48
+ ```
49
+
50
+ ### To get list of all added files
51
+
52
+ `lux_assets show`
53
+
54
+ or
55
+
56
+ ```
57
+ require 'lux_assets'
58
+
59
+ ap LuxAssets.to_h
60
+ ```
61
+
62
+
63
+ ## Example ./config/assets.rb
64
+
65
+ ```
66
+ # relative_root './app/assets'
67
+
68
+ asset :admin do
69
+ js do
70
+ add 'js/admin/js_vendor/*' # will add all files from a folder
71
+ add 'js/shared/**' # will add all files from a folder + subfolders
72
+ add '/Used/foo/app/bar/asssets/admin.js'
73
+ add ['list', 'of', 'files']
74
+ add proc { 'js string' }
75
+ plugin :foo
76
+ end
77
+
78
+ css do
79
+ add 'css/admin/index.scss'
80
+ add proc { 'css string' }
81
+ end
82
+ end
83
+
84
+ asset :main do
85
+ js do
86
+ # ...
87
+ end
88
+
89
+ css do
90
+ # ...
91
+ end
92
+ end
93
+ ```
94
+
95
+ ### What can you add
96
+
97
+ * relative file
98
+ * absolute file
99
+ * list of files
100
+ * proc
101
+
102
+ If you add proc, proc retun must be a string, not a file
103
+
104
+
105
+ ## Extending
106
+
107
+ ### Adding processor for new file type
108
+
109
+ This is all that is needed to add support for TypeScript compilation.
110
+
111
+ ```
112
+ class LuxAssets::Element
113
+ def compile_ts
114
+ LuxAssets.run "node_modules/typescript/.bin/tsc --outFile '#{@cache}' '#{@source}'"
115
+ end
116
+ end
117
+ ```
118
+
119
+ ### Added new plugin for file adder
120
+
121
+ You need to extend `LuxAssets` class and call method `add` with list of files or a proc.
122
+
123
+ ```
124
+ module LuxAssets
125
+ # include files from a plugin
126
+ def plugin name
127
+ plugin = Lux.plugin.get name
128
+ add '%s/**' % plugin[:folder]
129
+ end
130
+ end
131
+ ```
132
+
133
+ ## Rakefile
134
+
135
+ If you want to use `Rake` tasks and not `lux_assets` bin, there is a wrapper.
136
+
137
+ In `Rakefile` just add `require 'lux_assets'` and tasks will automaticly be added to your list of tasks.
138
+
139
+ Rake taks will call :env task to set up environment.
140
+
data/bin/lux_assets ADDED
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'thor'
4
+ require 'colorize'
5
+ require 'awesome_print'
6
+
7
+ require_relative '../lib/lux_assets'
8
+
9
+ ###
10
+
11
+ module Cli
12
+ extend self
13
+
14
+ def run what
15
+ puts what.green
16
+ system what
17
+ end
18
+
19
+ def die text
20
+ puts text.red
21
+ exit
22
+ end
23
+
24
+ def info text
25
+ puts '* %s' % text.magenta
26
+ end
27
+ end
28
+
29
+ ###
30
+
31
+ class AssetsCli < Thor
32
+
33
+ desc :install, 'Install all needed packages via yarn'
34
+ def install
35
+ packages = ["coffee-script", "minifier", "node-sass", "typescript", "babel-cli", "autoprefixer-cli"]
36
+
37
+ if `which yarn`.empty?
38
+ Cli.die('yarn not found -> install with "npm install yarn -g"')
39
+ end
40
+
41
+ for pkg in packages
42
+ Cli.run 'yarn add %s' % pkg
43
+ end
44
+
45
+ puts '* Installed: %s' % packages.map(&:green).join(', ')
46
+
47
+ unless LuxAssets::CONFIG_PATH.exist?
48
+ source = Pathname.new(__FILE__).join("../../misc/assets.rb")
49
+ LuxAssets::CONFIG_PATH.write source.read
50
+ puts '* Added template %s' % LuxAssets::CONFIG_PATH.to_s.green
51
+ end
52
+
53
+ puts "* To include LuxAssets rake tasks in Rakefile, just require 'lux_assets'".green
54
+ end
55
+
56
+ desc :show, 'Show all files/data in manifest'
57
+ def show
58
+ ap LuxAssets.to_h
59
+ end
60
+
61
+ desc :compile, 'Compile assets for production'
62
+ def compile
63
+ LuxAssets.compile_all do |name, path|
64
+ puts "Compile #{name.green} -> #{path}"
65
+ end
66
+ end
67
+
68
+ desc :clear, 'Clear all caches'
69
+ def clear
70
+ Cli.run 'rm -rf ./tmp/assets'
71
+ Cli.run 'rm -rf ./public/assets'
72
+ Cli.run 'rm ./public/manifest.json'
73
+ end
74
+
75
+ end
76
+
77
+ AssetsCli.start ARGV
@@ -0,0 +1,74 @@
1
+ # Asset group, single asset that produces target css or js
2
+
3
+ class LuxAssets::Asset
4
+ PUBLIC_ASSETS = './public/assets'
5
+
6
+ def initialize ext, name
7
+ @ext = ext == :js ? :js : :css
8
+ @name = name
9
+ @files = LuxAssets.to_h[ext][name]
10
+ @target = "#{@ext}/#{@name}"
11
+ end
12
+
13
+ def js?
14
+ @ext == :js
15
+ end
16
+
17
+ def css?
18
+ @ext == :css
19
+ end
20
+
21
+ def compile
22
+ @data = []
23
+
24
+ die "No files found for [#{@ext}/#{@name}]" unless @files[0]
25
+
26
+ for file in @files
27
+ if file.is_a?(Proc)
28
+ @data.push file.call
29
+ else
30
+ @data.push LuxAssets::Element.new(file, production: true).compile
31
+ end
32
+ end
33
+
34
+ send 'compile_%s' % @ext
35
+
36
+ @asset_file
37
+ end
38
+
39
+ def files
40
+ @files
41
+ end
42
+
43
+ ###
44
+
45
+ private
46
+
47
+ def save_data data
48
+ @asset_file = '/assets/%s' % (@target.sub('/', '-') + '-' + Digest::SHA1.hexdigest(data) + '.' + @ext.to_s)
49
+ @asset_path = "./public#{@asset_file}"
50
+
51
+ File.write(@asset_path, data)
52
+
53
+ if LuxAssets::Manifest.add(@target, @asset_file)
54
+ yield
55
+
56
+ LuxAssets.run 'touch -t 201001010101 %s' % @asset_path
57
+ LuxAssets.run 'gzip -k %s' % @asset_path
58
+ end
59
+ end
60
+
61
+ def compile_js
62
+ save_data @data.join(";\n") do
63
+ # minify
64
+ LuxAssets.run './node_modules/minifier/index.js --no-comments -o "%{file}" "%{file}"' % { file: @asset_path }
65
+ end
66
+ end
67
+
68
+ def compile_css
69
+ save_data @data.join($/) do
70
+ #autoprefixer
71
+ LuxAssets.run './node_modules/.bin/autoprefixer-cli %s' % @asset_path
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,170 @@
1
+ # LuxAssets.configure do
2
+ # asset :admin do
3
+ # js do
4
+ # add 'js/admin/js_vendor/*'
5
+ # add 'js/admin/js/*'
6
+ # add 'js/shared/*'
7
+ # add 'js/admin/index.coffee'
8
+ # end
9
+ # css do
10
+ # add 'css/admin/index.scss'
11
+ # end
12
+ # end
13
+ # end
14
+ # ...
15
+
16
+ # LuxAssets.css('admin').files
17
+ # LuxAssets.css(:admin).compile
18
+
19
+ # LuxAssets.css(:admin).compile_all do |name, path|
20
+ # puts "Compile #{name} -> #{path}"
21
+ # end
22
+
23
+ module LuxAssets
24
+ extend self
25
+
26
+ CONFIG_PATH = Pathname.new ENV.fetch('ASSET_CONFIG') { './config/assets.rb' }
27
+
28
+ ASSET_TYPES ||= {
29
+ js: ['js', 'coffee', 'ts'],
30
+ css: ['css', 'scss']
31
+ }
32
+
33
+ @assets ||= { js: {}, css: {} }
34
+
35
+ @relative_root = './app/assets'
36
+ def relative_root name=nil
37
+ @relative_root = name if name
38
+ @relative_root
39
+ end
40
+
41
+ def die text
42
+ puts text
43
+ exit
44
+ end
45
+
46
+ def asset name
47
+ @name = name.to_s
48
+ yield
49
+ end
50
+
51
+ def configure &block
52
+ class_eval &block
53
+ end
54
+
55
+ def run what, cache_file=nil
56
+ puts what.yellow
57
+
58
+ stdin, stdout, stderr, wait_thread = Open3.popen3(what)
59
+
60
+ error = stderr.gets
61
+ while line = stderr.gets do
62
+ error += line
63
+ end
64
+
65
+ # node-sass prints to stderror on complete
66
+ error = nil if error && error.index('Rendering Complete, saving .css file...')
67
+
68
+ if error
69
+ cache_file.unlink if cache_file && cache_file.exist?
70
+
71
+ puts error.red
72
+ end
73
+ end
74
+
75
+ def js name=nil, &block
76
+ add_files :js, name, block
77
+ end
78
+
79
+ def css name=nil, &block
80
+ add_files :css, name, block
81
+ end
82
+
83
+ # adds file or list of files
84
+ # add 'plugin:js_widgets/*'
85
+ # add 'js/vendor/*'
86
+ # add 'index.coffee'
87
+ # add proc { ... }
88
+ def add added
89
+ case added
90
+ when Array
91
+ add_local_files added
92
+ return
93
+ when Proc
94
+ @files += [added]
95
+ else
96
+ files =
97
+ if added[0,1] == '/' || added[0,2] == './'
98
+ added
99
+ else
100
+ "#{@relative_root}/#{added}"
101
+ end
102
+
103
+ files =
104
+ if files.include?('*')
105
+ files += '/*' if files =~ %r{\/\*\*$}
106
+ Dir[files].sort
107
+ else
108
+ [files]
109
+ end
110
+
111
+ files = files.select { |it| File.file?(it) }
112
+
113
+ if files[0]
114
+ add_local_files files
115
+ else
116
+ die 'No files found in "%s -> :%s" (%s)'.red % [@ext, @name, added]
117
+ end
118
+ end
119
+ end
120
+
121
+ # get list of files in the resource
122
+ def files name
123
+ parts = name.split('/', 2)
124
+ to_h[parts.first.to_sym][parts[1]]
125
+ end
126
+
127
+ def compile_all
128
+ for ext in [:js, :css]
129
+ for name in to_h[ext].keys
130
+ path = LuxAssets.send(ext, name).compile
131
+
132
+ yield "#{ext}/#{name}", path if block_given?
133
+ end
134
+ end
135
+ end
136
+
137
+ def to_h
138
+ unless @assets_loaded
139
+ die 'Assets file not found in %s' % CONFIG_PATH unless CONFIG_PATH.exist?
140
+ @assets_loaded = true
141
+ eval CONFIG_PATH.read
142
+ end
143
+
144
+ @assets
145
+ end
146
+
147
+ private
148
+
149
+ def add_local_files files
150
+ files = files.select { |it| ASSET_TYPES[@ext].include?(it.split('.').last) }
151
+
152
+ files = files.select do |f|
153
+ name = f.split('/').last
154
+ name.include?('.') && !name[0, 1] != '!'
155
+ end
156
+
157
+ @files += files
158
+ files
159
+ end
160
+
161
+ def add_files ext, name, block
162
+ @name = name.to_s if name
163
+ return Asset.new ext, @name unless block
164
+
165
+ @files = []
166
+ @ext = ext
167
+ class_eval &block
168
+ @assets[ext][@name] = @files
169
+ end
170
+ end
@@ -0,0 +1,69 @@
1
+ # One file that can be scss, js, coffee, ts, etc...
2
+ class LuxAssets::Element
3
+ TMP_ASSETS = './tmp/assets'
4
+
5
+ def initialize source, opts={}
6
+ @source = Pathname.new source
7
+ @opts = opts
8
+ @cache = Pathname.new './tmp/assets/%s' % source.gsub('/','-')
9
+ end
10
+
11
+ def compile
12
+ method_name = 'compile_%s' % @source.to_s.split('.').last.downcase
13
+
14
+ if respond_to?(method_name, true)
15
+ cached || send(method_name)
16
+ else
17
+ @source.read
18
+ end
19
+ end
20
+
21
+ def content_type
22
+ @ext ||= @source.to_s.split('.').last.to_sym
23
+
24
+ [:css, :scss].include?(@ext) ? 'text/css' : 'text/javascript'
25
+ end
26
+
27
+ ###
28
+
29
+ private
30
+
31
+ def production?
32
+ defined?(Rake)
33
+ end
34
+
35
+ def cached
36
+ @cache.exist? && (@cache.ctime > @source.ctime) ? @cache.read : false
37
+ end
38
+
39
+ def compile_coffee
40
+ coffee_path = './node_modules/coffee-script/bin/coffee'
41
+ coffee_opts = production? ? '-cp' : '-Mcp --no-header'
42
+
43
+ LuxAssets.run "#{coffee_path} #{coffee_opts} '#{@source}' > '#{@cache}'", @cache
44
+
45
+ data = @cache.read
46
+ data = data.gsub(%r{//#\ssourceURL=[\w\-\.\/]+/app/assets/}, '//# sourceURL=/raw_asset/')
47
+
48
+ @cache.write data
49
+
50
+ data
51
+ end
52
+
53
+ def compile_scss
54
+ node_sass = './node_modules/node-sass/bin/node-sass'
55
+ node_opts = production? ? '--output-style compressed' : '--source-comments'
56
+ LuxAssets.run "#{node_sass} #{node_opts} '#{@source}' '#{@cache}'", @cache
57
+ @cache.read
58
+ end
59
+ alias :compile_sass :compile_scss
60
+
61
+ def compile_js
62
+ ";\n%s\n;" % @source.read
63
+ end
64
+
65
+ def compile_ts
66
+ LuxAssets.run "node_modules/typescript/.bin/tsc --outFile '#{@cache}' '#{@source}'"
67
+ end
68
+
69
+ end
@@ -0,0 +1,30 @@
1
+ # manifest file
2
+
3
+ module LuxAssets::Manifest
4
+ MANIFEST = Pathname.new('./public/manifest.json')
5
+
6
+ extend self
7
+
8
+ def add name, path
9
+ json = JSON.load MANIFEST.read
10
+
11
+ return false if json['files'][name] == path
12
+
13
+ json['files'][name] = path
14
+
15
+ MANIFEST.write JSON.pretty_generate(json)
16
+
17
+ true
18
+ end
19
+
20
+ def get name
21
+ json = JSON.load MANIFEST.read
22
+ json['files'][name]
23
+ end
24
+
25
+ ###
26
+
27
+ MANIFEST.write '{"files":{}}' unless MANIFEST.exist?
28
+ end
29
+
30
+
data/lib/lux_assets.rb ADDED
@@ -0,0 +1,29 @@
1
+ # libs
2
+ require 'digest/sha1'
3
+ require 'json'
4
+ require 'pathname'
5
+ require 'open3'
6
+
7
+ # gem files
8
+ require_relative './lux_assets/base'
9
+ require_relative './lux_assets/asset'
10
+ require_relative './lux_assets/element'
11
+ require_relative './lux_assets/manifest'
12
+
13
+ # lux framework bindings
14
+ if defined?(Lux)
15
+ require_relative './vendor/lux/assets_helper'
16
+ require_relative './vendor/lux/assets_plugin'
17
+ require_relative './vendor/lux/assets_routes'
18
+ end
19
+
20
+ # rake bindings
21
+ if defined?(Rake)
22
+ require_relative './vendor/tasks.rb'
23
+ end
24
+
25
+ # create needed dirs unless found
26
+ for dir in ['./tmp/', './tmp/assets', './public', './public/assets']
27
+ Dir.mkdir(dir) unless Dir.exist?(dir)
28
+ end
29
+
@@ -0,0 +1,61 @@
1
+ # export to all templates
2
+ # = asset 'www/index.scss'
3
+ # = asset 'www/index.coffee'
4
+ module HtmlHelper
5
+ def asset_include path, opts={}
6
+ raise ArgumentError.new("Asset path can't be empty") if path.empty?
7
+
8
+ ext = path.split('?').first.split('.').last
9
+ type = ['css', 'sass', 'scss'].include?(ext) ? :style : :script
10
+ type = :style if path.include?('fonts.googleapis.com')
11
+
12
+ current.response.early_hints path, type
13
+
14
+ if type == :style
15
+ %[<link rel="stylesheet" href="#{path}" />]
16
+ else
17
+ %[<script src="#{path}"></script>]
18
+ end
19
+ end
20
+
21
+ # builds full asset path based on resource extension
22
+ # asset('js/main')
23
+ # will render 'app/assets/js/main/index.coffee' as http://aset.path/assets/main-index-md5hash.js
24
+ def asset file, opts={}
25
+ opts = { dev_file: opts } unless opts.class == Hash
26
+
27
+ # return joined assets if symbol given
28
+ # = asset :main -> asset("css/main") + asset("js/main")
29
+ return [asset("css/#{file}"), asset("js/#{file}")].join($/) if
30
+ file.is_a?(Symbol)
31
+
32
+ # return second link if it is defined and we are in dev mode
33
+ return asset_include opts[:dev_file] if opts[:dev_file] && Lux.config(:compile_assets)
34
+
35
+ # return internet links
36
+ return asset_include file if file.starts_with?('/') || file.starts_with?('http')
37
+
38
+ # return asset link in production or fail unless able
39
+ unless Lux.config(:compile_assets)
40
+ manifest = Lux.ram_cache('asset-manifest') { JSON.load Lux.root.join('public/manifest.json').read }
41
+ mfile = manifest['files'][file]
42
+
43
+ raise 'Compiled asset link for "%s" not found in manifest.json' % file if mfile.empty?
44
+
45
+ return asset_include(Lux.config.assets_root.to_s + mfile, opts)
46
+ end
47
+
48
+ # try to create list of incuded files and show every one of them
49
+ data = LuxAssets.files(file).inject([]) do |total, asset|
50
+ if asset.is_a?(Proc)
51
+ tag_name = file.include?('css') ? :style : :script
52
+ total.push({}.tag tag_name, asset.call)
53
+ else
54
+ total.push asset_include '/compiled_asset/' + asset
55
+ end
56
+ end
57
+
58
+ data.map{ |it| it.sub(/^\s\s/,'') }.join("\n")
59
+ end
60
+
61
+ end
@@ -0,0 +1,13 @@
1
+ module LuxAssets
2
+
3
+ # include files from a plugin
4
+ def plugin name
5
+ # load pluigin if needed
6
+ Lux.plugin name
7
+
8
+ plugin = Lux.plugin.get name
9
+ add '%s/**' % plugin[:folder]
10
+ end
11
+
12
+ end
13
+
@@ -0,0 +1,34 @@
1
+ # /compiled_asset/www/js/pjax.coffee
2
+ # /raw_asset/www/js/pjax.coffee
3
+ Lux.app.before do
4
+ # skip /favicon.ico that forces refresh
5
+ next unless nav.path[1]
6
+ next unless Lux.config(:compile_assets)
7
+
8
+ # only allow clear in dev
9
+ # clear assets every 4 seconds max
10
+ if Lux.current.no_cache?
11
+ Lux.cache.fetch('lux-clear-assets', ttl: 4, log: false, force: false) do
12
+ puts '* Clearing assets from ./tmp/assets'.yellow
13
+ `rm -rf ./tmp/assets && mkdir ./tmp/assets`
14
+ true
15
+ end
16
+ end
17
+
18
+ case nav.root
19
+ when 'compiled_asset'
20
+ path = nav.reset.drop(1).join('/')
21
+
22
+ asset = LuxAssets::Element.new path
23
+ current.response.content_type asset.content_type
24
+ current.response.body asset.compile
25
+
26
+ when 'raw_asset'
27
+ path = nav.reset.drop(1).join('/')
28
+
29
+ Lux.error "You can watch raw files only in development" unless Lux.dev?
30
+
31
+ file = Pathname.new path
32
+ body file.exist? ? file.read : "error: File not found"
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ require 'colorize'
2
+
3
+ $lux_assets_bin ||= proc do |command|
4
+ bin = Pathname.new(__dir__).join('../../bin/lux_assets').to_s
5
+ system '%s %s' % [bin, command]
6
+ end
7
+
8
+ namespace :assets do
9
+ desc 'Clear all assets'
10
+ task :clear do
11
+ $lux_assets_bin.call :clear
12
+ end
13
+
14
+ desc 'Install all needed packages via yarn'
15
+ task :install do
16
+ $lux_assets_bin.call :install
17
+ end
18
+
19
+ desc 'Compile assets to public/assets and generate mainifest.json'
20
+ task compile: :env do
21
+ LuxAssets.compile_all do |name, path|
22
+ puts "Compile #{name.green} -> #{path}"
23
+ end
24
+ end
25
+
26
+ desc 'Show all files/data in manifest'
27
+ task show: :env do
28
+ ap LuxAssets.to_h
29
+ end
30
+
31
+ desc 'Upload assets to S3'
32
+ task :s3_upload do
33
+ puts 'aws s3 sync ./public s3://bucket.location --cache-control "max-age=31536000, public"'
34
+ end
35
+ end
36
+
data/misc/assets.rb ADDED
@@ -0,0 +1,25 @@
1
+ # relative_root './app/assets' # default root for relative assets
2
+
3
+ asset :admin do
4
+ js do
5
+ # add 'js/admin/js_vendor/*'
6
+ # add '/Used/foo/app/bar/asssets/admin.js'
7
+ # add ['list', 'of', 'files']
8
+ # add proc { 'js string' }
9
+ end
10
+
11
+ css do
12
+ # add 'css/admin/index.scss'
13
+ # add proc { 'css string' }
14
+ end
15
+ end
16
+
17
+ asset :main do
18
+ js do
19
+
20
+ end
21
+
22
+ css do
23
+
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lux_assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Dino Reic
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: awesome_print
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Web assets packer, convenience over configuration, simplified webpack
56
+ or sprockets with cleaner configuration
57
+ email: rejotl@gmail.com
58
+ executables:
59
+ - lux_assets
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - "./README.md"
64
+ - "./bin/lux_assets"
65
+ - "./lib/lux_assets.rb"
66
+ - "./lib/lux_assets/asset.rb"
67
+ - "./lib/lux_assets/base.rb"
68
+ - "./lib/lux_assets/element.rb"
69
+ - "./lib/lux_assets/manifest.rb"
70
+ - "./lib/vendor/lux/assets_helper.rb"
71
+ - "./lib/vendor/lux/assets_plugin.rb"
72
+ - "./lib/vendor/lux/assets_routes.rb"
73
+ - "./lib/vendor/tasks.rb"
74
+ - "./misc/assets.rb"
75
+ - bin/lux_assets
76
+ homepage: https://github.com/dux/lux_assets
77
+ licenses:
78
+ - MIT
79
+ metadata: {}
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubyforge_project:
96
+ rubygems_version: 2.7.5
97
+ signing_key:
98
+ specification_version: 4
99
+ summary: Web assets
100
+ test_files: []