未验证 提交 f443aac3 编写于 作者: K Kevin Dew

Run yarn install relative to Rails.root

We may not always have binstubs relative to the directory we are running
the rake task from. The particular case for this is with a mountable
Rails engine and dummy app that is created to test it. This sets all the
tasks up to run under an `app` namespace in
railties/lib/rails/tasks/engine.rake

This change resolves a problem whereby running `app:yarn:install` would
have no effect as it would try to run in the plugins bin directory
rather than the test/dummy/bin. This also means that it installs from
test/dummy/package.json and into test/dummy/node_modules which is
behaviour consistent with a normal Rails app.

On a rails engine:

```
➜  tmp rails plugin new rails-plugin --mountable
➜  tmp cd rails-plugin
```

Before this change:

```
➜  rails-plugin rake app:yarn:install
➜  rails-plugin
```

After this change:

```
➜  rails-plugin rake app:yarn:install
yarn install v1.9.4
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
  Done in 0.07s.
```

When this change is ran against a normal rails install there is not a
behavioural change:

```
➜  tmp rails new full-app
➜  tmp cd full-app
➜  full-app git:(master) ✗ rake yarn:install
yarn install v1.9.4
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
  Done in 0.09s.
```
上级 dd29fabe
......@@ -9,7 +9,7 @@ namespace :yarn do
rails_env = ENV["RAILS_ENV"]
valid_node_envs.include?(rails_env) ? rails_env : "production"
end
system({ "NODE_ENV" => node_env }, "./bin/yarn install --no-progress --frozen-lockfile")
system({ "NODE_ENV" => node_env }, "#{Rails.root}/bin/yarn install --no-progress --frozen-lockfile")
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册