BabelのcompactはGoogle Apps Scriptと相性がよくない、そしてGASプロジェクトは壊れたら直らない

結論

..babelrc に以下のように書け

{
  "preset":  ["es2015", "gas"],
  "compact": false
}

何が起きていたか

Babel の compact は 6.24.1 時点では 500KB 以上で適用されることとなっているが、これが適用されると eslint 的には OK だが Google Apps Script 的には NG なコードができあがる。ことがある。

Babel の compact は UglifyJS のようにアグレッシブなものではなく、本当に単純に white space を取り除いただけっぽく見える。読もうと思えば人間でも普通に読める。

ところがこれが適用されたコードで

(class)@294c297 is not function ...

みたいな謎のエラーが出るようになってしまった。該当箇所は Babel が compact したところのようだが、何が悪いのかは Script Editor は教えてくれない、何が function じゃないかも分からない。しかもどのようにコードをいじってもまったく同じエラーが出続ける。

そう、GAS プロジェクトそのものが壊れてしまったのだ。1

おいおい。

待て待て。おれは賢いツールを組み合わせて賢くコードを作ってるじゃないか。これ以上何を望むんだい、と思ったが後の祭り。GAS プロジェクトが壊れたら新規に作り直してコードをコピーし直すしかない。

ふーっ。オーケー、分かったよ。降参だ。作り直そう。幸い deploy は自動化されているんだ、新しいプロジェクトを作るから deploy 先の ID は変わっちまうが、先日作った仕組みの中の JSON の ID をちょっと書き換えるだけさ。たいした影響はない。プロパティの設定も飛んだし、依存ライブラリ(Node.jsじゃなくてGASのライブラリ)も飛んだし、実行時の権限確認もまっさらさ。たいした問題じゃない。ちょっと関係者にメールすればいいだけ。幸い、GAS なんだから、共有してる人は対象の Drive 上のオブジェクトが共有されている人たちだ。そうそう、 [ File ] → [ Email collaborators ] っと…

めんどうくさいわ!

勝手に壊れんなや!

  1. 実際には GAS プロジェクトが壊れたと気づくまでだいぶ試行錯誤を要したのは言うまでもない! 

More

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Develop Document Jekyll