> For the complete documentation index, see [llms.txt](https://docs.alistairtweed.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.alistairtweed.com/rails/minimal-rails/assets.md).

# Assets

## JavaScript

`--skip-javascript [-J]`

```markup
<!-- app/views/layouts/application.html.erb -->

<head>
  <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
```

```ruby
# bin/setup

FileUtils.chdir APP_ROOT do
  # Install JavaScript dependencies
  # system('bin/yarn')
end
```

```ruby
# bin/yarn

#!/usr/bin/env ruby

APP_ROOT = File.expand_path('..', __dir__)

Dir.chdir(APP_ROOT) do
  begin
    exec 'yarnpkg', *ARGV
  rescue Errno::ENOENT
    $stderr.puts 'Yarn executable was not detected in the system.'
    $stderr.puts 'Download Yarn at https://yarnpkg.com/en/docs/install'
    exit 1
  end
end
```

```ruby
# config/initializers/assets.rb

Rails.application.config.assets.paths << Rails.root.join('node_modules')
```

```ruby
# config/initializers/content_security_policy.rb

# Rails.application.config.content_security_policy do |policy|
#   policy.connect_src :self, :https, 'http://localhost:3035', 'ws://localhost:3035' if Rails.env.development?
# end
```

```ruby
# Gemfile

gem 'turbolinks', '~> 5'
gem 'webpacker', '~> 4.0'
```

```javascript
// package.json

{
  "name": "my_app",
  "private": true,
  "dependencies": {
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/ujs": "^6.0.0",
    "@rails/webpacker": "4.2.2",
    "turbolinks": "^5.2.0"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.10.3"
  }
}
```

## Sprockets

`--skip-sprockets [-S]`

```ruby
# config/application.rb

require 'sprockets/railtie'
```

```ruby
# config/environments/development.rb

class Application < Rails::Application
  config.assets.debug = true
  config.assets.quiet = true
end
```

```ruby
# config/environments/production.rb

class Application < Rails::Application
  config.assets.compile = false
end
```

```ruby
# config/initializers/assets.rb

Rails.application.config.assets.version = '1.0'
Rails.application.config.assets.paths << Rails.root.join('node_modules')
```

```ruby
# Gemfile

gem 'sass-rails', '>= 6'
```

## Turbolinks

`--skip-turbolinks`

```javascript
// app/javascript/packs/application.js

require('turbolinks').start()
```

```markup
<!-- app/views/layouts/application.html.erb -->

<head>
  <%= stylesheet_link_tag 'application', 'data-turbolinks-track': 'reload', media: 'all' %>
  <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
```

```ruby
# Gemfile

gem 'turbolinks', '~> 5'
```

```javascript
// package.json

{
  "dependencies": {
    "turbolinks": "^5.2.0"
  }
}
```
