💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Find a file
Ben Gotow 1157fdc450 build(*): electron-compile, electron-packager instead of custom tooling
Summary:
This diff removes significant cruft from N1's compilation and build tooling:

- Electron-Packager replaces most of the code in build/tasks/* used to copy things,
  bundle things, download electron, etc.

- script/bootstrap has been replaced with a much simpler script that does not use
  APM, does not download Electron (we just use electron as an NPM dep) and does
  not manully compile sqlite. It requires NPMv3, but I think that's safe.

- babel and eslint are now devDependencies of the main project. The main project
  also supports optionalDependencies now.

- npm test and npm start replace ./N1.sh

- APM is still around, and is only put into N1 so it can install plugins at runtime.
  It should be removed as soon as we notify package maintainers and have them provide zips.

- N1 no longer has it's own compile-cache or babel/typescript/coffeescript compilers.
  It delegates to electron-compile and electron-compilers. Both of these packages had
  to be forked and modified slightly, but I'm hopeful the modifications will make it back
  in to the projects and you can still consult their documentation for more info.

  + In the near future, I think we should stop shipping electron-compilers with N1. This
    would mean that all plugins would need to be compiled on pre-publish, just like NPM
    packages, and would complicate the local development story a bit, but would make the
    app smaller. electron-compile is not supposed to compile at runtime in the prod app,
    just pull from the compile cache.

- I've re-organized Grunt according to Grunt best practices, where each tasks/* file
  specifies it's own config and imports grunt tasks.

- Unfortunately, I was not able to use any open source projects for the deb and rpm builds,
  because we have things like postinst hooks and start menu items which are not supported
  by the electron installer-generators.

WIP

Turn off all LESS compilation, because themes. Doh.

Use Grunt for new build process too, just remove tasks

More changes

Add babel-eslint

Remove unused react-devtools

WIP

Add name

Ignore nonexistent

Switch to more modern approach to config for grunt

Move zipping to mac installer task

Restructure publish task so it aggregates first, can log useful info if publishing is disabled

Fix build dirs

Fix win installer

Fix linux installer

Fix linux installer

Try making linux

A few more

Updates

Upadtes

fixes

fixes

Get rid of non-meaningful variables

Resolve assets path

Insert nylas.sh

Clean up args more

Actually use description

Fix display name ugh

More tweaks

Expliclty write /usr/bin/nylas

Improve vars

Use old nylas.sh

Reinstate APM to better scope this diff

Test Plan: Test on Mac, Windows, Linux

Reviewers: evan, jackie, juan

Reviewed By: jackie, juan

Differential Revision: https://phab.nylas.com/D3411
2016-11-09 13:52:10 -08:00
apm build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
build build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
docs fix(readme): More Win32-specific instructions 2016-10-12 16:37:04 -07:00
dot-nylas bump(version): 0.4.200 2016-10-26 19:48:22 -04:00
flow-typed rm(grim): We’re not using Grim for deprecations 2016-10-25 11:36:20 -07:00
internal_packages build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
keymaps es6(composer): Composer extensions => ES2016 2016-10-27 17:28:36 -07:00
menus fix(menus): Add missing Window menu to win32 and linux 2016-06-10 11:55:59 -07:00
script build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
spec fix(mailto): Improve handling of invalid urls 2016-11-07 14:09:47 -08:00
spec_integration fix(spec): remove unnecessary messages & prevent extra hot window 2016-09-29 09:52:51 -05:00
src build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
static build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
.eslintrc
.flowconfig feat(flow): Add Flow to Nylas N1 2016-10-24 22:44:16 -04:00
.gitignore build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
.gitmodules
.travis.yml fix(travis): PUBLISH_BUILD only on mirror 2016-11-03 11:31:58 -07:00
appveyor.yml fix(build): bump AppVeyor to build with Node 6.9 from 4.2 2016-10-28 10:37:59 -04:00
CHANGELOG.md bump(version): 0.4.204 2016-11-07 14:16:50 -08:00
CONFIGURATION.md feat(self-hosting): Add onboarding flow for self-hosted sync engine 2016-07-21 14:25:30 -07:00
CONTRIBUTING.md build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md 2016-07-23 13:03:38 -07:00
keymap.json fix(config): Move all reads / writes to the main process 2016-05-16 16:38:46 -05:00
LICENSE.md fix(license): Swap ref to GPLv3 with the whole thing so GitHub picks it up 2016-10-15 10:48:44 -07:00
package.json build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00
README.md build(*): electron-compile, electron-packager instead of custom tooling 2016-11-09 13:52:10 -08:00

Arc files for N1

In the setup.sh script, these will get copied over into N1 so Nylas team members can use arcanist to develop on N1, but the open source version does not need to reference them.