Sha256: 1d6a881d8f282382226fb99441f50726bdc5a330135d955ad0d7104286daff06

Contents?: true

Size: 1.81 KB

Versions: 7

Compression:

Stored size: 1.81 KB

Contents

require "webpacker/configuration"

additional_packages = ""
example_source = "typescript"

# Additional configuration is required for React projects
package_json = Rails.root.join("package.json")
if File.exist?(package_json)
  package = JSON.parse(File.read(package_json))
  package["dependencies"] ||= {}

  if package["dependencies"].keys.include?("react")
    additional_packages = "@types/react @types/react-dom"
    example_source = "react"
  end
end

say "Copying typescript loader to config/webpack/loaders"
copy_file "#{__dir__}/loaders/typescript.js", Rails.root.join("config/webpack/loaders/typescript.js").to_s

say "Adding typescript loader to config/webpack/environment.js"
insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
  "const typescript =  require('./loaders/typescript')\n",
  after: /require\(('|")@rails\/webpacker\1\);?\n/

insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
  "environment.loaders.prepend('typescript', typescript)\n",
  before: "module.exports"

say "Copying tsconfig.json to the Rails root directory for typescript"
copy_file "#{__dir__}/examples/#{example_source}/tsconfig.json", "tsconfig.json"

say "Updating webpack paths to include .ts file extension"
insert_into_file Webpacker.config.config_path, "- .ts\n".indent(4), after: /\s+extensions:\n/

say "Updating webpack paths to include .tsx file extension"
insert_into_file Webpacker.config.config_path, "- .tsx\n".indent(4), after: /\s+extensions:\n/

say "Copying the example entry file to #{Webpacker.config.source_entry_path}"
copy_file "#{__dir__}/examples/typescript/hello_typescript.ts",
  "#{Webpacker.config.source_entry_path}/hello_typescript.ts"

say "Installing all typescript dependencies"
run "yarn add typescript ts-loader #{additional_packages}"

say "Webpacker now supports typescript 🎉", :green

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
webpacker-4.3.0 lib/install/typescript.rb
webpacker-5.0.1 lib/install/typescript.rb
webpacker-5.0.0 lib/install/typescript.rb
webpacker-4.2.2 lib/install/typescript.rb
webpacker-4.2.1 lib/install/typescript.rb
webpacker-4.2.0 lib/install/typescript.rb
webpacker-4.1.0 lib/install/typescript.rb