Sjednocená struktura komponent pro mé projekty EmberJS

Projekty s dlouhou životností často obsahují mnoho experimentálních „stylů“ nebo „technik“ nebo dokonce jen „ad-hoc struktury“. Mé projekty nejsou výjimkou.

Dnes jsem se rozhodl, že prosadím jednotnou strukturu pro všechny dílčí soubory v rámci uvedených projektů. Můj (aktuálně) preferovaný způsob vnořování složek/souborů je:components/foo/bar/baz/index.{js,hbs} .

Vyžaduje ruby ve vašem prostředí a nastavení COMPONENT_DIRECTORY variabilní. Doufám, že to někomu pomůže.

#!/usr/bin/env ruby
#
# Unifies component structure
#  - components/foo.hbs -> components/foo/index.hbs
#  - components/foo.js -> components/foo/index.js
#  - components/bar/template.hbs -> components/bar/index.hbs
#  - components/bar/component.js -> components/bar/index.js

COMPONENT_DIRECTORY='../your/app/or/addon/directory'

Dir.chdir(COMPONENT_DIRECTORY)

Dir.glob('./components/**/*.{hbs,js}').each do |entry|
  matches = %r{(.*)\/(.*)\.(hbs|js)$}.match(entry)
  next if matches[2] == 'index'

  is_weird_syntax = ((matches[2] == 'template') || (matches[2] == 'component'))

  new_folder = if is_weird_syntax
                 matches[1]
               else
                 File.join(matches[1], matches[2])
               end

  Dir.mkdir(new_folder) unless File.exist?(new_folder)
  new_file = File.join(new_folder, "index.#{matches[3]}")
  File.rename(entry, new_file)
  puts "#{entry} => #{new_file}"
end

Foto Ronaldo de Oliveira na Unsplash


No