cssbundling-rails 1.2.0 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cssbundling/version.rb +1 -1
- data/lib/install/Procfile_for_bun.dev +2 -0
- data/lib/install/Procfile_for_node.dev +2 -0
- data/lib/install/bootstrap/install.rb +12 -27
- data/lib/install/bulma/install.rb +6 -13
- data/lib/install/dev +3 -0
- data/lib/install/helpers.rb +42 -0
- data/lib/install/install.rb +5 -2
- data/lib/install/postcss/install.rb +6 -13
- data/lib/install/postcss/postcss.config.js +1 -0
- data/lib/install/sass/install.rb +6 -13
- data/lib/install/tailwind/install.rb +6 -13
- data/lib/tasks/cssbundling/build.rake +35 -3
- metadata +5 -3
- data/lib/install/Procfile.dev +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 643412ab70b4a60ccf019381db175e18fb2e779c34439cf89c19d0caa3a8dfd5
|
4
|
+
data.tar.gz: 80888732e4252b4e59ef90843010ef5dd6cf3e395c72ea8d2539c27557752dec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a14d2636c1b596f6cd4106c9214b1963f1f5e65329b3beaa27557de5dbfa6e57dcb9c688130e11ce75fc68a823fad74fddc3e3a14557e1fa6d3e663dc22a05a1
|
7
|
+
data.tar.gz: 687cd595a551a1feef7279fe59ff8a6a4c623e00c35b33aeb4a3dc13259f89f548e8a6ece4d1c7d727cedb71dd3feb88f4a8577278eba825f1074d6606286185
|
data/lib/cssbundling/version.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
require_relative "../helpers"
|
2
|
+
self.extend Helpers
|
3
|
+
|
1
4
|
say "Install Bootstrap with Bootstrap Icons, Popperjs/core and Autoprefixer"
|
2
5
|
copy_file "#{__dir__}/application.bootstrap.scss",
|
3
6
|
"app/assets/stylesheets/application.bootstrap.scss"
|
4
|
-
run "
|
7
|
+
run "#{bundler_cmd} add sass bootstrap bootstrap-icons @popperjs/core postcss postcss-cli autoprefixer nodemon"
|
5
8
|
|
6
9
|
inject_into_file "config/initializers/assets.rb", after: /.*Rails.application.config.assets.paths.*\n/ do
|
7
10
|
<<~RUBY
|
@@ -16,32 +19,14 @@ else
|
|
16
19
|
say %(Add import * as bootstrap from "bootstrap" to your entry point JavaScript file), :red
|
17
20
|
end
|
18
21
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
run %(npm set-script #{name} "#{script}")
|
24
|
-
run %(yarn #{name}) if run_script
|
25
|
-
when (8.0..)
|
26
|
-
say "Add #{name} script"
|
27
|
-
run %(npm pkg set scripts.#{name}="#{script}")
|
28
|
-
run %(yarn #{name}) if run_script
|
29
|
-
else
|
30
|
-
say %(Add "scripts": { "#{name}": "#{script}" } to your package.json), :green
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
add_npm_script("build:css:compile", "sass ./app/assets/stylesheets/application.bootstrap.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules")
|
35
|
-
add_npm_script("build:css:prefix", "postcss ./app/assets/builds/application.css --use=autoprefixer --output=./app/assets/builds/application.css")
|
36
|
-
add_npm_script("build:css", "yarn build:css:compile && yarn build:css:prefix")
|
37
|
-
add_npm_script("watch:css", "nodemon --watch ./app/assets/stylesheets/ --ext scss --exec \\\"yarn build:css\\\"", false)
|
22
|
+
add_package_json_script("build:css:compile", "sass ./app/assets/stylesheets/application.bootstrap.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules")
|
23
|
+
add_package_json_script("build:css:prefix", "postcss ./app/assets/builds/application.css --use=autoprefixer --output=./app/assets/builds/application.css")
|
24
|
+
add_package_json_script("build:css", "#{bundler_run_cmd} build:css:compile && #{bundler_run_cmd} build:css:prefix")
|
25
|
+
add_package_json_script("watch:css", "nodemon --watch ./app/assets/stylesheets/ --ext scss --exec \"#{bundler_run_cmd} build:css\"", false)
|
38
26
|
|
39
27
|
gsub_file "Procfile.dev", "build:css --watch", "watch:css"
|
40
28
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
else
|
46
|
-
say %(Add "browserslist": ["defaults"] to your package.json), :green
|
47
|
-
end
|
29
|
+
package_json = JSON.parse(File.read("package.json"))
|
30
|
+
package_json["browserslist"] ||= {}
|
31
|
+
package_json["browserslist"] = ["defaults"]
|
32
|
+
File.write("package.json", JSON.pretty_generate(package_json))
|
@@ -1,18 +1,11 @@
|
|
1
|
+
require_relative "../helpers"
|
2
|
+
self.extend Helpers
|
3
|
+
|
1
4
|
say "Install Bulma"
|
2
5
|
copy_file "#{__dir__}/application.bulma.scss",
|
3
6
|
"app/assets/stylesheets/application.bulma.scss"
|
4
|
-
run "
|
7
|
+
run "#{bundler_cmd} add sass bulma"
|
5
8
|
|
6
9
|
say "Add build:css script"
|
7
|
-
|
8
|
-
|
9
|
-
case `npx -v`.to_f
|
10
|
-
when 7.1...8.0
|
11
|
-
run %(npm set-script build:css "#{build_script}")
|
12
|
-
run %(yarn build:css)
|
13
|
-
when (8.0..)
|
14
|
-
run %(npm pkg set scripts.build:css="#{build_script}")
|
15
|
-
run %(yarn build:css)
|
16
|
-
else
|
17
|
-
say %(Add "scripts": { "build:css": "#{build_script}" } to your package.json), :green
|
18
|
-
end
|
10
|
+
add_package_json_script "build:css",
|
11
|
+
"sass ./app/assets/stylesheets/application.bulma.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules"
|
data/lib/install/dev
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Helpers
|
4
|
+
def bundler_cmd
|
5
|
+
using_bun? ? "bun" : "yarn"
|
6
|
+
end
|
7
|
+
|
8
|
+
def bundler_run_cmd
|
9
|
+
using_bun? ? "bun run" : "yarn"
|
10
|
+
end
|
11
|
+
|
12
|
+
def using_bun?
|
13
|
+
File.exist?('bun.lockb') || (tool_exists?('bun') && !File.exist?('yarn.lock'))
|
14
|
+
end
|
15
|
+
|
16
|
+
def tool_exists?(tool)
|
17
|
+
system "command -v #{tool} > /dev/null"
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_package_json_script(name, script, run_script=true)
|
21
|
+
if using_bun?
|
22
|
+
package_json = JSON.parse(File.read("package.json"))
|
23
|
+
package_json["scripts"] ||= {}
|
24
|
+
package_json["scripts"][name] = script
|
25
|
+
File.write("package.json", JSON.pretty_generate(package_json))
|
26
|
+
run %(bun run #{name}) if run_script
|
27
|
+
else
|
28
|
+
case `npx -v`.to_f
|
29
|
+
when 7.1...8.0
|
30
|
+
say "Add #{name} script"
|
31
|
+
run %(npm set-script #{name} "#{script}")
|
32
|
+
run %(yarn #{name}) if run_script
|
33
|
+
when (8.0..)
|
34
|
+
say "Add #{name} script"
|
35
|
+
run %(npm pkg set scripts.#{name}="#{script}")
|
36
|
+
run %(yarn #{name}) if run_script
|
37
|
+
else
|
38
|
+
say %(Add "scripts": { "#{name}": "#{script}" } to your package.json), :green
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/install/install.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require_relative "helpers"
|
2
|
+
self.extend Helpers
|
3
|
+
|
1
4
|
say "Build into app/assets/builds"
|
2
5
|
empty_directory "app/assets/builds"
|
3
6
|
keep_file "app/assets/builds"
|
@@ -41,10 +44,10 @@ unless Rails.root.join("package.json").exist?
|
|
41
44
|
end
|
42
45
|
|
43
46
|
if Rails.root.join("Procfile.dev").exist?
|
44
|
-
append_to_file "Procfile.dev", "css:
|
47
|
+
append_to_file "Procfile.dev", "css: #{bundler_run_cmd} build:css --watch\n"
|
45
48
|
else
|
46
49
|
say "Add default Procfile.dev"
|
47
|
-
copy_file "#{__dir__}
|
50
|
+
copy_file "#{__dir__}/#{using_bun? ? "Procfile_for_bun.dev" : "Procfile_for_node.dev"}", "Procfile.dev"
|
48
51
|
|
49
52
|
say "Ensure foreman is installed"
|
50
53
|
run "gem install foreman"
|
@@ -1,18 +1,11 @@
|
|
1
|
+
require_relative "../helpers"
|
2
|
+
self.extend Helpers
|
3
|
+
|
1
4
|
say "Install PostCSS w/ nesting and autoprefixer"
|
2
5
|
copy_file "#{__dir__}/postcss.config.js", "postcss.config.js"
|
3
6
|
copy_file "#{__dir__}/application.postcss.css", "app/assets/stylesheets/application.postcss.css"
|
4
|
-
run "
|
7
|
+
run "#{bundler_cmd} add postcss postcss-cli postcss-import postcss-nesting autoprefixer"
|
5
8
|
|
6
9
|
say "Add build:css script"
|
7
|
-
|
8
|
-
|
9
|
-
case `npx -v`.to_f
|
10
|
-
when 7.1...8.0
|
11
|
-
run %(npm set-script build:css "#{build_script}")
|
12
|
-
run %(yarn build:css)
|
13
|
-
when (8.0..)
|
14
|
-
run %(npm pkg set scripts.build:css="#{build_script}")
|
15
|
-
run %(yarn build:css)
|
16
|
-
else
|
17
|
-
say %(Add "scripts": { "build:css": "#{build_script}" } to your package.json), :green
|
18
|
-
end
|
10
|
+
add_package_json_script "build:css",
|
11
|
+
"postcss ./app/assets/stylesheets/application.postcss.css -o ./app/assets/builds/application.css"
|
data/lib/install/sass/install.rb
CHANGED
@@ -1,17 +1,10 @@
|
|
1
|
+
require_relative "../helpers"
|
2
|
+
self.extend Helpers
|
3
|
+
|
1
4
|
say "Install Sass"
|
2
5
|
copy_file "#{__dir__}/application.sass.scss", "app/assets/stylesheets/application.sass.scss"
|
3
|
-
run "
|
6
|
+
run "#{bundler_cmd} add sass"
|
4
7
|
|
5
8
|
say "Add build:css script"
|
6
|
-
|
7
|
-
|
8
|
-
case `npx -v`.to_f
|
9
|
-
when 7.1...8.0
|
10
|
-
run %(npm set-script build:css "#{build_script}")
|
11
|
-
run %(yarn build:css)
|
12
|
-
when (8.0..)
|
13
|
-
run %(npm pkg set scripts.build:css="#{build_script}")
|
14
|
-
run %(yarn build:css)
|
15
|
-
else
|
16
|
-
say %(Add "scripts": { "build:css": "#{build_script}" } to your package.json), :green
|
17
|
-
end
|
9
|
+
add_package_json_script "build:css",
|
10
|
+
"sass ./app/assets/stylesheets/application.sass.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules"
|
@@ -1,18 +1,11 @@
|
|
1
|
+
require_relative "../helpers"
|
2
|
+
self.extend Helpers
|
3
|
+
|
1
4
|
say "Install Tailwind (+PostCSS w/ autoprefixer)"
|
2
5
|
copy_file "#{__dir__}/tailwind.config.js", "tailwind.config.js"
|
3
6
|
copy_file "#{__dir__}/application.tailwind.css", "app/assets/stylesheets/application.tailwind.css"
|
4
|
-
run "
|
7
|
+
run "#{bundler_cmd} add tailwindcss@latest postcss@latest autoprefixer@latest"
|
5
8
|
|
6
9
|
say "Add build:css script"
|
7
|
-
|
8
|
-
|
9
|
-
case `npx -v`.to_f
|
10
|
-
when 7.1...8.0
|
11
|
-
run %(npm set-script build:css "#{build_script}")
|
12
|
-
run %(yarn build:css)
|
13
|
-
when (8.0..)
|
14
|
-
run %(npm pkg set scripts.build:css="#{build_script}")
|
15
|
-
run %(yarn build:css)
|
16
|
-
else
|
17
|
-
say %(Add "scripts": { "build:css": "#{build_script}" } to your package.json), :green
|
18
|
-
end
|
10
|
+
add_package_json_script "build:css",
|
11
|
+
"tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css --minify"
|
@@ -1,8 +1,40 @@
|
|
1
1
|
namespace :css do
|
2
|
+
desc "Install JavaScript dependencies"
|
3
|
+
task :install do
|
4
|
+
command = Cssbundling::Tasks.install_command
|
5
|
+
unless system(command)
|
6
|
+
raise "cssbundling-rails: Command install failed, ensure #{command.split.first} is installed"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
2
10
|
desc "Build your CSS bundle"
|
3
|
-
task :build do
|
4
|
-
|
5
|
-
|
11
|
+
build_task = task :build do
|
12
|
+
command = Cssbundling::Tasks.build_command
|
13
|
+
unless system(command)
|
14
|
+
raise "cssbundling-rails: Command build failed, ensure `#{command}` runs without errors"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
build_task.prereqs << :install unless ENV["SKIP_YARN_INSTALL"] || ENV["SKIP_BUN_INSTALL"]
|
18
|
+
end
|
19
|
+
|
20
|
+
module Cssbundling
|
21
|
+
module Tasks
|
22
|
+
extend self
|
23
|
+
|
24
|
+
def install_command
|
25
|
+
return "bun install" if File.exist?('bun.lockb') || (tool_exists?('bun') && !File.exist?('yarn.lock'))
|
26
|
+
return "yarn install" if File.exist?('yarn.lock') || tool_exists?('yarn')
|
27
|
+
raise "cssbundling-rails: No suitable tool found for installing JavaScript dependencies"
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_command
|
31
|
+
return "bun run build:css" if File.exist?('bun.lockb') || (tool_exists?('bun') && !File.exist?('yarn.lock'))
|
32
|
+
return "yarn build:css" if File.exist?('yarn.lock') || tool_exists?('yarn')
|
33
|
+
raise "cssbundling-rails: No suitable tool found for building CSS"
|
34
|
+
end
|
35
|
+
|
36
|
+
def tool_exists?(tool)
|
37
|
+
system "command -v #{tool} > /dev/null"
|
6
38
|
end
|
7
39
|
end
|
8
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cssbundling-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -36,12 +36,14 @@ files:
|
|
36
36
|
- lib/cssbundling-rails.rb
|
37
37
|
- lib/cssbundling/engine.rb
|
38
38
|
- lib/cssbundling/version.rb
|
39
|
-
- lib/install/
|
39
|
+
- lib/install/Procfile_for_bun.dev
|
40
|
+
- lib/install/Procfile_for_node.dev
|
40
41
|
- lib/install/bootstrap/application.bootstrap.scss
|
41
42
|
- lib/install/bootstrap/install.rb
|
42
43
|
- lib/install/bulma/application.bulma.scss
|
43
44
|
- lib/install/bulma/install.rb
|
44
45
|
- lib/install/dev
|
46
|
+
- lib/install/helpers.rb
|
45
47
|
- lib/install/install.rb
|
46
48
|
- lib/install/package.json
|
47
49
|
- lib/install/postcss/application.postcss.css
|
data/lib/install/Procfile.dev
DELETED