From 3dac36bd8e26363bb10f4d2a7b21efa75d200e26 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 1 Dec 2016 18:51:43 +0100 Subject: Yarn: Move node_modules, package.json, and yarn.lock file to vendor (#27245) Move node_modules, package.json, and yarn.lock file to vendor --- railties/lib/rails/generators/app_base.rb | 2 +- railties/lib/rails/generators/rails/app/app_generator.rb | 10 +++++++--- railties/lib/rails/generators/rails/app/templates/bin/setup.tt | 2 +- railties/lib/rails/generators/rails/app/templates/bin/yarn | 2 ++ .../rails/app/templates/config/initializers/assets.rb.tt | 2 +- railties/lib/rails/generators/rails/app/templates/gitignore | 4 +--- 6 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 railties/lib/rails/generators/rails/app/templates/bin/yarn (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 6feb8431a7..87f6f01750 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -427,7 +427,7 @@ module Rails end def package_json_exist? - File.exist?("package.json") + File.exist?("vendor/package.json") end def yarn_path diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 5f14f989d7..49d23d682a 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -54,7 +54,7 @@ module Rails end def packagejson - template "package.json" + template "package.json", "vendor/package.json" end def app @@ -155,8 +155,12 @@ module Rails end def vendor - vendor_javascripts - vendor_stylesheets + if options[:yarn] + empty_directory_with_keep_file "vendor" + else + vendor_javascripts + vendor_stylesheets + end end def vendor_javascripts diff --git a/railties/lib/rails/generators/rails/app/templates/bin/setup.tt b/railties/lib/rails/generators/rails/app/templates/bin/setup.tt index c82a922eef..73b0732463 100644 --- a/railties/lib/rails/generators/rails/app/templates/bin/setup.tt +++ b/railties/lib/rails/generators/rails/app/templates/bin/setup.tt @@ -17,7 +17,7 @@ chdir APP_ROOT do system! 'gem install bundler --conservative' system('bundle check') || system!('bundle install') <% if options[:yarn] %> - system! 'yarn' + system! 'bin/yarn' <% end %> <% unless options.skip_active_record -%> diff --git a/railties/lib/rails/generators/rails/app/templates/bin/yarn b/railties/lib/rails/generators/rails/app/templates/bin/yarn new file mode 100644 index 0000000000..cf48e2e5b7 --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/bin/yarn @@ -0,0 +1,2 @@ +VENDOR_PATH = File.expand_path('../vendor', __dir__) +Dir.chdir(VENDOR_PATH) { exec "yarnpkg #{ARGV.join(" ")}" } diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt index 1ba182e562..bf5399ac2d 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt @@ -7,7 +7,7 @@ Rails.application.config.assets.version = '1.0' # Rails.application.config.assets.paths << Emoji.images_path <%- if options[:yarn] -%> # Add Yarn node_modules folder to the asset load path. -Rails.application.config.assets.paths << Rails.root.join('node_modules') +Rails.application.config.assets.paths << Rails.root.join('vendor/node_modules') <%- end -%> # Precompile additional assets. diff --git a/railties/lib/rails/generators/rails/app/templates/gitignore b/railties/lib/rails/generators/rails/app/templates/gitignore index bdcbe8d629..dee42ebb87 100644 --- a/railties/lib/rails/generators/rails/app/templates/gitignore +++ b/railties/lib/rails/generators/rails/app/templates/gitignore @@ -22,9 +22,7 @@ <% end -%> <% if options[:yarn] -%> -# Ignore node modules. -/node_modules/* +/vendor/node_modules <% end -%> -# Ignore Byebug command history file. .byebug_history -- cgit v1.2.3