TypeScript for Rails
This is a wrapper for the TypeScript, JavaScript superset language by Microsoft.
It enables you to use the .ts
extension in the Asset Pipeline and also in ActionView Templates.
This gem uses the typescript-node-ruby library by KAWACHI Takashi for the typescript parsing with node js.
The credit for the overall structure and the tests goes to the people that wrote the coffee-rails Gem, since I shamelessly copy&pasted some of their code.
Requirements
The current version requires that node.js is installed on the system.
The requirement for node is tested upon starting the application. If the node command is not available you get the following error message:
typescript-node requires node command, but it's not found. Please install it. Set TS_NODE environmental variable If you want to use node command in non-standard path.
Installation
Add this line to your application's Gemfile:
gem 'typescript-rails'
And then execute:
$ bundle
Note: We need to install (if we haven't already) the Typescript definitions, more info.
npm install --save-dev @types/node
Usage
Just add a .js.ts
file in your app/assets/javascripts
directory and include it just like you are used to do.
Configurations:
Typescript::Rails::Compiler.default_options = %w(--target ES5 --noImplicitAny --module commonjs)
Default Configurations:
Typescript::Rails::Compiler.default_options = %w(--target ES5 --noImplicitAny)
Default Javascript Compilation
Add this line to your config/application.rb
as show below, above the config.assets.enabled = true
:
config.app_generators.javascript_engine :typescript
# Enable the asset pipeline
config.assets.enabled = true
If you don't want it to be the default javascript engine, you can also use it adhoc as show below:
rails g controller MyController --javascript_engine=typescript
Referenced TypeScript dependencies
typescript-rails
recurses through all TypeScript-style referenced files and tells its Sprockets::Context
that the TS file being processed depend
s_on
each file listed as a reference. This activates Sprocket’s cache-invalidation behavior when any of the descendant references of the root TS file is changed.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Maintainers
FUJI Goro [email protected]
Authors
Klaus Zanders [email protected]