jekyll-tailwindcss 0.1.0-x86_64-linux → 0.3.0-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c34f97df1e831e430b92cab8f9dcbf3326d7cb61b3c5aa14d5c557e346ed3f0
4
- data.tar.gz: 287eb01bfed25e7cfa2edaf82c1b5640f777838882045029ea0e92ed2630dea9
3
+ metadata.gz: 2606f7c9a3bf612cfe1c57c0cf79c8f2f982de6c70b46f14d1aeabf3c6c034e2
4
+ data.tar.gz: 188a4cd4df5e55e52c360c59300ff1c9ce2e6f43bc0f894263753796a58b7a19
5
5
  SHA512:
6
- metadata.gz: ffdb8150aadb0cd4d3fb1b0ea08e109fc75f6fe7be936610c316621497bb90f4628ffb03ce2872456af4cad4a930158cfc422df1e5db72dee6c813c3edea4657
7
- data.tar.gz: 3ceaf372cd23353049f47ce1638a9d7c3117f9b30398345732f6ea7252a98256d384875dbb903e0c6cea8f0e772f3e1b4c6d1896fa2db76aa4ee78c592d5e7a7
6
+ metadata.gz: e76b337e5f9054f2c7bd15f5a56a531baccc05d0bc61366d2e4cb4dde18f2f652b000c7a15ed1e4f885725bf7039bca0df86275b2a332ab8895938668ae95fdb
7
+ data.tar.gz: c50c1a8af793075e92bf6f295eac25e548046c668b5309f4ee3d2934b16584627bde8b8806096f71625a3b931f7370333ba9e98b371eaa8e1078955929c22791
data/README.md CHANGED
@@ -1,53 +1,151 @@
1
1
  # Jekyll::Tailwindcss
2
2
 
3
+ Bring the fun of building with TailwindCSS into your Jekyll project (without any JavaScript)
4
+
5
+ **TL;DR** This gem borrows *heavily* from github.com/rails/tailwindcss-rails to provide platform-specific tailwind executables and provide a smooth developer experience in Jekyll projects
6
+
7
+ Much like the Rails gem, this gem wraps [the standalone executable version](https://tailwindcss.com/blog/standalone-cli) of the Tailwind CSS v3 framework. It installs these as platform-specific executables, so there are separate underlying gems per platform, but the correct gem will automatically be picked for your platform.
8
+
9
+ > “Because building a great jekyll site shouldn’t require a `node_modules` folder
10
+
3
11
  ## Installation
4
12
 
5
13
  Install the gem in your jekyll project's Gemfile by executing the following:
6
14
 
7
- ```sh
8
- $ bundle add jekyll-tailwindcss
15
+ ```
16
+ bundle add jekyll-tailwindcss
9
17
  ```
10
18
 
11
- Add it to your list of jekyll-plugins
19
+ Add the plugin to your list of jekyll plugins in `_config.yml`
12
20
 
13
21
  ```yml
14
22
  plugins:
15
23
  - jekyll-tailwindcss
16
24
  ```
17
25
 
26
+ ## Tailwind Configuration
27
+
28
+ This plugin requires you to have a tailwind configuration file (`tailwind.config.js`) at the root level of your project, which can be generated by running:
29
+
30
+ ```
31
+ bundle exec jekyll-tailwindcss init
32
+ ```
33
+
34
+ Tailwind will include the CSS for the classes found in `content` directories. For most jekyll sites, this would work well.
35
+
36
+ ```js
37
+ content: [
38
+ "./_drafts/**/*.md",
39
+ "./_includes/**/*.html",
40
+ "./_layouts/**/*.html",
41
+ "./_pages/*.{html,md}",
42
+ "./_posts/*.md",
43
+ "./*.{html,md}",
44
+ ],
45
+ ```
46
+
47
+ Learn more at https://tailwindcss.com/docs/configuration
48
+
49
+
50
+
18
51
  ## Usage
19
52
 
20
- Currently, this gem assumes you have several files in your project:
53
+ ```sh
54
+ bundle exec jekyll serve # or build
55
+ ```
56
+
57
+ Any `*.css` file processed by jekyll [^1] that contains the `@tailwind` [directive](https://tailwindcss.com/docs/functions-and-directives#config) will now be converted through the Tailwind CLI.
58
+
59
+ [^1]: Jekyll will process any file that begins with yaml [frontmatter](https://jekyllrb.com/docs/front-matter/)
21
60
 
22
- **`tailwind.config.js`**
61
+ ### Examples
23
62
 
24
- This is the tailwind configuration for your project. Learn [more here](https://tailwindcss.com/docs/configuration).
25
63
 
26
- **`_input.css`**
64
+ A CSS file with frontmatter and `@tailwind` directives:
27
65
 
28
- This file will contain your tailwind directives and any custom classes. Read more in the [docs here](https://tailwindcss.com/docs/functions-and-directives#config)
66
+ ```css
67
+ /* assets/css/styles.css */
68
+ ---
69
+ # This yaml frontmatter is required for jekyll to process the file
70
+ ---
29
71
 
30
- **`*.tailwindcss`**
72
+ @tailwind base;
73
+ @tailwind components;
74
+ @tailwind utilities;
31
75
 
32
- Any files with this extension (and contain [frontmatter](https://jekyllrb.com/docs/front-matter/)) will be processed by tailwind, and converted into a corresponding filename with a `.css` extension.
76
+ .btn {
77
+ @apply font-bold py-2 px-4 rounded !important;
78
+ }
79
+ ```
80
+
81
+ will be converted to
33
82
 
34
- For instance, `assets/css/styles.tailwindcss` will convert to `_site/assets/css/styles.css`
83
+ ```css
84
+ /* _site/assets/css/styles.css */
35
85
 
86
+ /*
87
+ * Tailwind generated CSS
88
+ * ...
89
+ */
90
+ ```
36
91
 
37
92
  ## Development
38
93
 
39
94
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
40
95
 
41
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
96
+ To install this gem on your local machine, run `bundle exec rake install`.
97
+
98
+ ### Updating to the latest upstream tailwindcss version
99
+
100
+ Update `lib/tailwindcss/upstream.rb` with the upstream version.
101
+
102
+ Run `bundle exec rake clobber` and then `bundle exec rake download` to ensure the tailwindcss binaries can be downloaded and you have the correct versions on the local disk.
103
+
104
+
105
+ ## Testing this gem
106
+
107
+ ### Running the test suite
108
+
109
+ The unit tests are run with `bundle exec rspec`
110
+
111
+ There is an additional integration test which runs in CI, `spec/integration/user_journey_test.sh` which you may also want to run.
112
+
113
+
114
+ ### Testing in a Jekyll project
115
+
116
+ If you want to test modifications to this gem, you must run `rake download` once to download the upstream `tailwindcss` executables.
117
+
118
+ Then you can point your Jekyll project's `Gemfile` at the local version of the gem as you normally would:
119
+
120
+ ``` ruby
121
+ gem "jekyll-tailwindcss", path: "/path/to/jekyll-tailwindcss"
122
+ ```
123
+
124
+ ### Cutting a release
125
+
126
+ - bump the version
127
+ - [ ] update `lib/jekyll-tailwindcss/version.rb`
128
+ - [ ] update `CHANGELOG.md`
129
+ - [ ] commit and create a git tag
130
+ - build the native gems:
131
+ - [ ] `bundle exec rake clobber` to clean up possibly old tailwindcss executables
132
+ - [ ] `bundle exec rake package`
133
+ - push
134
+ - [ ] `for g in pkg/*.gem ; do gem push $g ; done`
135
+ - [ ] `git push`
136
+ - announce
137
+ - [ ] create a release at https://github.com/vormwald/jekyll-tailwindcss/releases
42
138
 
43
139
  ## Contributing
44
140
 
45
141
  Bug reports and pull requests are welcome on GitHub at https://github.com/vormwald/jekyll-tailwindcss. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/vormwald/jekyll-tailwindcss/blob/main/CODE_OF_CONDUCT.md).
46
142
 
143
+
144
+
47
145
  ## License
48
146
 
49
147
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
50
148
 
51
149
  ## Code of Conduct
52
150
 
53
- Everyone interacting in the Jekyll::Tailwindcss project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/vormwald/jekyll-tailwindcss/blob/main/CODE_OF_CONDUCT.md).
151
+ Everyone interacting in the Jekyll::Tailwindcss project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [code of conduct](https://github.com/vormwald/jekyll-tailwindcss/blob/main/CODE_OF_CONDUCT.md).
@@ -1,3 +1,5 @@
1
+ require "open3"
2
+
1
3
  module Jekyll
2
4
  module Converters
3
5
  class Tailwindcss < Converter
@@ -5,20 +7,43 @@ module Jekyll
5
7
  priority :low
6
8
 
7
9
  def matches(ext)
8
- /^\.tailwindcss$/i.match?(ext)
10
+ /^\.css$/i.match?(ext)
9
11
  end
10
12
 
11
13
  def output_ext(ext)
12
- ".css"
14
+ # At this point, we will have a CSS file
15
+ ext
13
16
  end
14
17
 
15
18
  def convert(content)
19
+ return content unless /@tailwind/i.match?(content)
20
+
16
21
  dev_mode = Jekyll.env == "development"
17
22
  Jekyll.logger.info "Jekyll Tailwind:", "Generating #{dev_mode ? "" : "minified "}CSS"
18
23
 
19
24
  compile_command = ::Tailwindcss::Commands.compile_command(debug: dev_mode).join(" ")
20
25
 
21
- `#{compile_command}`
26
+ output, error = nil
27
+ Open3.popen3(tailwindcss_env_options, compile_command) do |stdin, stdout, stderr, _wait_thread|
28
+ stdin.write content # write the content of *.tailwindcss to the tailwindcss CLI as input
29
+ stdin.close
30
+ error = stderr.read
31
+ output = stdout.read
32
+ end
33
+ Jekyll.logger.warn "Jekyll Tailwind:", error unless error.nil?
34
+
35
+ output
36
+ rescue => e
37
+ Jekyll.logger.error "Jekyll Tailwind:", e.message
38
+ content
39
+ end
40
+
41
+ private
42
+
43
+ def tailwindcss_env_options
44
+ # Without this ENV you'll get a warning about `Browserslist: caniuse-lite is outdated`
45
+ # Since we're using the CLI, we can't update the data, so we ignore it.
46
+ {"BROWSERSLIST_IGNORE_OLD_DATA" => "1"}
22
47
  end
23
48
  end
24
49
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Tailwindcss
5
- VERSION = "0.1.0"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
@@ -76,8 +76,8 @@ module Tailwindcss
76
76
  def compile_command(debug: false, **kwargs)
77
77
  command = [
78
78
  executable(**kwargs),
79
- "-i", "./_input.css",
80
- "-c", "./tailwind.config.js"
79
+ "--input", "-",
80
+ "--config", "./tailwind.config.js"
81
81
  ]
82
82
 
83
83
  command << "--minify" unless debug
metadata CHANGED
@@ -1,20 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-tailwindcss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Mike Vormwald
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-16 00:00:00.000000000 Z
11
+ date: 2024-06-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description:
14
14
  email:
15
15
  - mvormwald@gmail.com
16
16
  executables:
17
- - tailwindcss
17
+ - jekyll-tailwindcss
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
@@ -22,7 +22,7 @@ files:
22
22
  - LICENSE-DEPENDENCIES
23
23
  - README.md
24
24
  - Rakefile
25
- - exe/tailwindcss
25
+ - exe/jekyll-tailwindcss
26
26
  - exe/x86_64-linux/tailwindcss
27
27
  - lib/jekyll-tailwindcss.rb
28
28
  - lib/jekyll-tailwindcss/version.rb
@@ -34,7 +34,7 @@ licenses:
34
34
  - MIT
35
35
  metadata:
36
36
  homepage_uri: https://github.com/vormwald/jekyll-tailwindcss
37
- post_install_message:
37
+ post_install_message:
38
38
  rdoc_options: []
39
39
  require_paths:
40
40
  - lib
@@ -49,8 +49,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  requirements: []
52
- rubygems_version: 3.4.20
53
- signing_key:
52
+ rubygems_version: 3.5.11
53
+ signing_key:
54
54
  specification_version: 4
55
55
  summary: Integrate Tailwind CSS into your Jekyll site.
56
56
  test_files: []
File without changes