jekyll-tailwind 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b8dafd0a86f3def0e0b737532f34a43950de42fb61a4023c2418febe8c2d721
4
- data.tar.gz: 74dc082a521f00cf6405c17550d86212b6939c348f292207972eed588f6b3333
3
+ metadata.gz: bfc5db87c31c4f1f704558198c29a61878e9d3bfc707d8a448ca63b166487a29
4
+ data.tar.gz: 3f2472d57d40f82f51e3de00517d58bff5fe4e5a6f04d22aef4cc0934b5abb6b
5
5
  SHA512:
6
- metadata.gz: c0dabe14e1b1443f634ea7ba2b878c4523cd94fa5d4f0b01cbceb0471b438fe477004f4e4551ac299370eaf63b02b9adba7dc55f72f40e46088f97afc39771ea
7
- data.tar.gz: abb59dfb73338c7c965fc0b73fce6623f46ca955c5ef1100981a1d20ff844cfe573a7dc78f3c006301b447ef3fedb916d23c7e6b71c3ff3b7e192424ead17337
6
+ metadata.gz: 7c17b0881fb9ca7878c97e9619243ea7f4b1742e9342e414ddacb02a3ae0b5a8a29c9392372a97a515d39c17e72fca1416263698e2f4f95f583a500378586b31
7
+ data.tar.gz: 10c55df1672307e2b27c177c466e2155a4b8d4be3233fc6ef9d6ca35605312e0c700197fc0c89fbadcfaa4cb13635252e027490393b8cf01dbb2834698c51207
data/CHANGELOG.md CHANGED
@@ -1,4 +1,25 @@
1
- ## [Unreleased]
1
+ ## Unreleased
2
+
3
+ ## [2.1.0] - 2025-01-20
4
+ ### Changed
5
+ - We emit a deprecation warning if Arrays is used for input config.
6
+
7
+ ### Added
8
+ - Fail a build, if there are multiple input files defined.
9
+
10
+ ## [2.0.0] - 2024-09-30
11
+ ### New
12
+ - Use tailwindcss-ruby gem as a wrapper for executable.
13
+ - Expose `input` and `output` parameters in _config.yml.
14
+ - It's possible to minimize output now
15
+ - support for postcss was added.
16
+ - `rake` was added as a dev dependency, to publish updates with `rake release`.
17
+
18
+ ### Changed
19
+ - `config_path` is currently deprecated and will be replaced with `config`
20
+
21
+ ### Removed
22
+ - `version` setting doesn't do anything anymore, tailwindcss executable version could be managed through Gemfile.
2
23
 
3
24
  ## [1.0.0] - 2024-03-13
4
25
 
data/README.md CHANGED
@@ -6,34 +6,64 @@
6
6
 
7
7
  To add this gem to your project you must include it in your Gemfile:
8
8
 
9
+ 1. Add a gem
9
10
  ```ruby
10
11
  group :jekyll_plugins do
11
12
  gem 'jekyll-tailwind'
12
13
  end
13
14
  ```
15
+ 2. Add plugin to _config.yml:
16
+ ```yml
17
+ plugins:
18
+ - jekyll-tailwind
19
+ ```
20
+
21
+ 3. Add **tailwind.config.js** to root directory with following contents
22
+ ```js
23
+ module.exports = {
24
+ content: ["./**/*.html"],
25
+ theme: {
26
+ extend: {},
27
+ },
28
+ plugins: [
29
+ require('@tailwindcss/typography'),
30
+ require('@tailwindcss/forms'),
31
+ require('@tailwindcss/container-queries')
32
+ ],
33
+ };
34
+ ```
35
+
36
+ 4. Modify default template to include app.css, e.g.:
37
+ `<link rel="stylesheet" href="{{ "/assets/css/app.css" | relative_url }}">`
14
38
 
15
- **The first time you build your Jekyll site, this gem will automatically download the Tailwind CLI for your platform and use it to build your CSS.** The Tailwind CLI will be saved in `_tailwind/tailwind-VERSION-PLATFORM`. It is recommended that you add this file to your `.gitignore` and don't commit it to your repository.
16
39
 
17
- It is important to note that **subsequent runs will use the existing Tailwind CLI and won't download it again.**
40
+ ## Adjust tailwind configuration
18
41
 
19
- ## Customize the Tailwind version
42
+ By default Tailwind will:
43
+ - read the `tailwind.config.js` file that lives in your project's root (more info at [the Tailwind docs](https://tailwindcss.com/docs/configuration)).
44
+ - Output file will also be written into `_site/assets/css/app.css`.
45
+ - Process postcss if `postcss.config.js` is present in the root directory.
20
46
 
21
- Although not strictly necessary, it is recommended to pin your desired Tailwind CLI version in `_config.yml`.
47
+ But it's possible to tweak these settings through `_config.yml` file:
22
48
 
23
49
  ```yml
24
50
  tailwind:
25
- version: 3.4.1
51
+ config: config/tailwind.config.js
52
+ input: assets/css/app.css
53
+ output: _site/assets/css/web.css
54
+ postcss: config/postcss.config.js # default is nil
55
+ minify: true # defaults to false
26
56
  ```
27
57
 
28
- If you don't do this, the gem will automatically download the latest Tailwind CLI version that was available when gem was published.
58
+ ## Picking Tailwind version
59
+ It's possible to pick particular version of tailwindd by locking `tailwindcss-ruby` dependency to certain version. Add following to your Gemfile:
29
60
 
30
- ## Read the Tailwind configuration from an alternative path
61
+ `gem 'tailwindcss-ruby', '>=3', '<4'`
31
62
 
32
- By default Tailwind will read the `tailwind.config.js` file that lives in your project's root (more info at [the Tailwind docs](https://tailwindcss.com/docs/configuration)).
63
+ or if you're looking for a 4v:
33
64
 
34
- If your configuration file lives elsewhere you can say so in the `_config.yml` file:
65
+ `gem 'tailwindcss-ruby', '>=4'`
35
66
 
36
- ```yml
37
- tailwind:
38
- config_path: assets/tailwind.config.js
39
- ```
67
+
68
+ ## Troubleshooting
69
+ You may run into issues with tailwind executable, please refer to [troubleshooting section in tailwindcss-ruby gem](https://github.com/flavorjones/tailwindcss-ruby?tab=readme-ov-file#troubleshooting).
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  class Tailwind
5
- VERSION = "1.0.0"
5
+ VERSION = "2.1"
6
6
  end
7
7
  end
@@ -1,14 +1,53 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "jekyll-tailwind/version"
4
- require_relative "jekyll-tailwind/installer"
5
4
 
6
5
  require "jekyll"
6
+ require "tailwindcss/ruby"
7
7
 
8
+ module Jekyll
9
+ class Tailwind
10
+ def initialize(config)
11
+ if config["config_path"]
12
+ Jekyll.logger.warn "WARNING: The `config_path` option is deprecated and will be removed in the next releases. Please use the `config` option instead."
13
+ end
14
+ if config["version"]
15
+ Jekyll.logger.warn "WARNING: The `version` option has no effect, version could be managed through 'tailwindcss-ruby' gem in you're Gemfile."
16
+ end
17
+
18
+ @config = config["config_path"] || config["config"] || "tailwind.config.js"
19
+ @postcss = config.fetch("postcss", "postcss.config.js")
20
+
21
+ @input = if config["input"].is_a?(Array)
22
+ Jekyll.logger.warn "DEPRECATION: jekyll-tailwind gem can't have multiple input files. Ability to provide array as input will be gradually fazed out. Change array value like this `[assets/css/app.css]` to `assets/css/app.css`"
23
+
24
+ raise "Multiple input files are not supported" if config["input"].length > 1
25
+
26
+ config["input"].first
27
+ else
28
+ config["input"]
29
+ end
30
+ @output = config.fetch("output", "_site/assets/css/app.css")
31
+ @minify = config.fetch("minify", false)
32
+ end
33
+
34
+ def compile
35
+ command = [
36
+ Tailwindcss::Ruby.executable,
37
+ "--output", @output,
38
+ "--config", @config,
39
+ ]
40
+
41
+ command += ["--input", @input] if @input
42
+ command += ["--minify"] if @minify
43
+ command += ["--postcss", @postcss] if File.exist?(@postcss)
44
+
45
+ `#{command.join(' ')}`
46
+ end
47
+ end
48
+ end
49
+
50
+ # It's important to run TailwindCSS compilation after Jekyll has finished with build steps. TailwindCSS will analyse resulting HTML and produce a CSS file with attributes that are actually in use, this is done to produce a smaller CSS file.
8
51
  Jekyll::Hooks.register [:site], :post_write do |site|
9
- tailwind = Jekyll::Tailwind::Installer.new(
10
- version: site.config.dig("tailwind", "version"),
11
- config_path: site.config.dig("tailwind", "config_path")
12
- )
13
- tailwind.install_and_run
52
+ Jekyll::Tailwind.new(site.config.fetch('tailwind', {})).compile
14
53
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-tailwind
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: '2.1'
5
5
  platform: ruby
6
6
  authors:
7
- - crbelaus
7
+ - Cristian Álvarez Belaustegui
8
+ - Stanislav (Stas) Katkov
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
12
+ date: 2025-01-20 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: jekyll
@@ -30,9 +31,38 @@ dependencies:
30
31
  - - "<"
31
32
  - !ruby/object:Gem::Version
32
33
  version: '5.0'
34
+ - !ruby/object:Gem::Dependency
35
+ name: tailwindcss-ruby
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
33
62
  description: Run TailwindCSS from your Jekyll site without requiring NodeJS
34
63
  email:
35
64
  - cristian@crbelaus.com
65
+ - github@skatkov.com
36
66
  executables: []
37
67
  extensions: []
38
68
  extra_rdoc_files: []
@@ -41,9 +71,8 @@ files:
41
71
  - CHANGELOG.md
42
72
  - LICENSE.txt
43
73
  - README.md
44
- - jekyll-tailwind.gemspec
74
+ - Rakefile
45
75
  - lib/jekyll-tailwind.rb
46
- - lib/jekyll-tailwind/installer.rb
47
76
  - lib/jekyll-tailwind/version.rb
48
77
  homepage: https://github.com/crbelaus/jekyll-tailwind
49
78
  licenses:
@@ -67,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
96
  - !ruby/object:Gem::Version
68
97
  version: '0'
69
98
  requirements: []
70
- rubygems_version: 3.5.3
99
+ rubygems_version: 3.5.22
71
100
  signing_key:
72
101
  specification_version: 4
73
102
  summary: Use Tailwind CLI from your Jekyll site
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/jekyll-tailwind/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "jekyll-tailwind"
7
- spec.version = Jekyll::Tailwind::VERSION
8
- spec.authors = ["crbelaus"]
9
- spec.email = ["cristian@crbelaus.com"]
10
-
11
- spec.summary = "Use Tailwind CLI from your Jekyll site"
12
- spec.description = "Run TailwindCSS from your Jekyll site without requiring NodeJS"
13
- spec.homepage = "https://github.com/crbelaus/jekyll-tailwind"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
16
-
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://github.com/crbelaus/jekyll-tailwind"
19
- spec.metadata["changelog_uri"] = "https://github.com/crbelaus/jekyll-tailwind/blob/main/CHANGELOG.md"
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(__dir__) do
24
- `git ls-files -z`.split("\x0").reject do |f|
25
- (File.expand_path(f) == __FILE__) ||
26
- f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
27
- end
28
- end
29
- spec.bindir = "exe"
30
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
32
-
33
- spec.add_dependency "jekyll", ">= 3.0", "< 5.0"
34
-
35
- # For more information and examples about making a new gem, check out our
36
- # guide at: https://bundler.io/guides/creating_gem.html
37
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fileutils"
4
- require "jekyll"
5
- require "open-uri"
6
-
7
- module Jekyll
8
- class Tailwind::Installer
9
- def initialize(options)
10
- @target =
11
- case RUBY_PLATFORM
12
- when "arm64-darwin23"
13
- "macos-arm64"
14
- when "x86_64-linux"
15
- "linux-x64"
16
- else
17
- raise "Tailwind CLI is not available for platform: #{RUBY_PLATFORM}"
18
- end
19
-
20
- @version = options[:version] || "3.4.1"
21
- @config_path = options[:config_path] || "tailwind.config.js"
22
- @path = "_tailwind/tailwind-#{@target}-#{@version}"
23
- end
24
-
25
- def install_and_run
26
- install unless File.exist?(@path)
27
-
28
- `#{@path} -i _site/assets/css/app.css -o _site/assets/css/app.css -c #{@config_path}`
29
- Jekyll.logger.info "Tailwind:", "Rebuilt _site/assets/css/app.css"
30
- end
31
-
32
- private
33
-
34
- def install
35
- Jekyll.logger.info "Tailwind:", "CLI version #{@version} not found for #{@target}"
36
- Jekyll.logger.info "Tailwind:", "Installing..."
37
-
38
- uri = URI.parse("https://github.com/tailwindlabs/tailwindcss/releases/download/v#{@version}/tailwindcss-#{@target}")
39
- file = uri.open
40
-
41
- FileUtils.mkdir "_tailwind" unless File.exist?("_tailwind")
42
- FileUtils.install file.path, @path, mode: 0o755
43
-
44
- Jekyll.logger.info "Tailwind:", "CLI installed at #{@path}"
45
- end
46
- end
47
- end