electron-packagerのignoreオプションが余計なファイルを巻き込みすぎるのを何とかした
Electronのアプリを作成するelectron-packagerコマンドでは、
ignoreオプションでアプリに含めたくないファイルを除外できる。
最初のバージョン
最初はこのような感じでelectron-packagerコマンドを実行していた。
electron-packager . MYukkuriVoice --platform=darwin --arch=x64 --electronVersion=1.7.9 --icon=icns/myukkurivoice.icns \ --overwrite --asar.unpackDir=vendor \ --ignore="(\.gitignore|\.gitmodules|bin|docs|icns|test|README.md|vendor/aqk2k_mac|vendor/aqtk1-mac|vendor/aqtk2-mac|vendor/aqtk10-mac)"
でも、これは間違いだった。
ignoreオプションは、Regexpマッチでファイルを拾う。
このコマンド例では、ignoreオプションでbinとかtestとかdocsとかを指定していたので、
ファイルパスの一部にbinやtestやdocsが入っていたら、巻き込まれて作成するアプリから除外されてしまうのだ。
(そして、アプリが動かなくなった…)
どのように直せば良いか
electron-packagerのignoreオプションは複数指定できる。
そして、ignoreオプションのマッチングの仕組みは↓のようになっていて、
file変数にはパッケージのルートからのパス文字列が入っていた。
// node_modules/electron-packager/ignore.js for (var i = 0; i < ignore.length; i++) { if (file.match(ignore[i])) { return false } }
よって、次のようにignoreオプションを指定すれば、
余計なファイルを巻き込んで除外せずに済むようになる。
electron-packager . MYukkuriVoice --platform=darwin --arch=x64 --electronVersion=1.7.9 --icon=icns/myukkurivoice.icns \ --overwrite --asar.unpackDir=vendor \ --ignore="^/\.gitignore" \ --ignore="^/\.gitmodules" \ --ignore="^/bin" \ --ignore="^/docs" \ --ignore="^/icns" \ --ignore="^/test" \ --ignore="^/README.md" \ --ignore="^/vendor/aqk2k_mac" \ --ignore="^/vendor/aqtk1-mac" \ --ignore="^/vendor/aqtk2-mac" \ --ignore="^/vendor/aqtk10-mac"
でも、ちょっと待って
よく考えたら、使用しているnode_modulesの中に
テストコードとか、サンプルコードとか、ビルド用のファイルが含まれてる。
それらのファイルはアプリの実行に不要なのだから、除外すべきなのでは?
ドキュメントもasarに固めたら見えないし、要らないよね。
しかし、ignoreオプションで*の指定とかできないらしい(?)。
最終形はこうなりました(^_^;)
electron-packager . MYukkuriVoice --platform=darwin --arch=x64 --electronVersion=1.7.9 --icon=icns/myukkurivoice.icns \ --overwrite --asar.unpackDir=vendor \ --ignore="^/MYukkuriVoice-darwin-x64" \ --ignore="^/README.md" \ --ignore="^/.git" \ --ignore="^/.gitignore" \ --ignore="^/.gitmodules" \ --ignore="^/bin" \ --ignore="^/docs" \ --ignore="^/icns" \ --ignore="^/test" \ --ignore="^/vendor/.gitignore" \ --ignore="^/vendor/aqk2k_mac" \ --ignore="^/vendor/aqtk1-mac" \ --ignore="^/vendor/aqtk10-mac" \ --ignore="^/vendor/aqtk2-mac" \ --ignore=".DS_Store" \ --ignore=".babelrc" \ --ignore=".editorconfig" \ --ignore=".eslintrc" \ --ignore=".eslintrc.json" \ --ignore=".jshintrc" \ --ignore=".npmignore" \ --ignore=".npmignore" \ --ignore=".stylelintrc.json" \ --ignore=".travis.yml" \ --ignore="^/node_modules/about-window/LICENSE.txt" \ --ignore="^/node_modules/about-window/README.md" \ --ignore="^/node_modules/angular-input-highlight/README.md" \ --ignore="^/node_modules/angular-input-highlight/test" \ --ignore="^/node_modules/angular/LICENSE.md" \ --ignore="^/node_modules/angular/README.md" \ --ignore="^/node_modules/async/CHANGELOG.md" \ --ignore="^/node_modules/async/LICENSE" \ --ignore="^/node_modules/async/README.md" \ --ignore="^/node_modules/audio-buffer-stream/README.md" \ --ignore="^/node_modules/audio-buffer-stream/test" \ --ignore="^/node_modules/balanced-match/LICENSE.md" \ --ignore="^/node_modules/balanced-match/README.md" \ --ignore="^/node_modules/bindings/README.md" \ --ignore="^/node_modules/brace-expansion/README.md" \ --ignore="^/node_modules/concat-map/LICENSE" \ --ignore="^/node_modules/concat-map/README.markdown" \ --ignore="^/node_modules/concat-map/example" \ --ignore="^/node_modules/concat-map/test" \ --ignore="^/node_modules/conf/license" \ --ignore="^/node_modules/conf/readme.md" \ --ignore="^/node_modules/core-util-is/LICENSE" \ --ignore="^/node_modules/core-util-is/README.md" \ --ignore="^/node_modules/core-util-is/test.js" \ --ignore="^/node_modules/cryptico.js/README.md" \ --ignore="^/node_modules/cryptico.js/sample" \ --ignore="^/node_modules/debug/CHANGELOG.md" \ --ignore="^/node_modules/debug/LICENSE" \ --ignore="^/node_modules/debug/Makefile" \ --ignore="^/node_modules/debug/README.md" \ --ignore="^/node_modules/dot-prop/license" \ --ignore="^/node_modules/dot-prop/readme.md" \ --ignore="^/node_modules/electron-config/license" \ --ignore="^/node_modules/electron-config/readme.md" \ --ignore="^/node_modules/electron-is-accelerator/LICENSE" \ --ignore="^/node_modules/electron-is-accelerator/README.md" \ --ignore="^/node_modules/electron-is-accelerator/test.js" \ --ignore="^/node_modules/electron-json-storage/CHANGELOG.md" \ --ignore="^/node_modules/electron-json-storage/README.md" \ --ignore="^/node_modules/electron-json-storage/doc" \ --ignore="^/node_modules/electron-json-storage/tests" \ --ignore="^/node_modules/electron-localshortcut/license" \ --ignore="^/node_modules/electron-localshortcut/readme.md" \ --ignore="^/node_modules/electron-log/LICENSE" \ --ignore="^/node_modules/electron-log/README.md" \ --ignore="^/node_modules/env-paths/license" \ --ignore="^/node_modules/env-paths/readme.md" \ --ignore="^/node_modules/exists-file/CHANGELOG.md" \ --ignore="^/node_modules/exists-file/LICENSE.md" \ --ignore="^/node_modules/ffi/CHANGELOG.md" \ --ignore="^/node_modules/ffi/LICENSE" \ --ignore="^/node_modules/ffi/README.md" \ --ignore="^/node_modules/ffi/deps" \ --ignore="^/node_modules/ffi/example" \ --ignore="^/node_modules/ffi/src" \ --ignore="^/node_modules/ffi/test" \ --ignore="^/node_modules/find-up/license" \ --ignore="^/node_modules/find-up/readme.md" \ --ignore="^/node_modules/fs.realpath/LICENSE" \ --ignore="^/node_modules/fs.realpath/README.md" \ --ignore="^/node_modules/glob/LICENSE" \ --ignore="^/node_modules/glob/README.md" \ --ignore="^/node_modules/glob/changelog.md" \ --ignore="^/node_modules/inflight/LICENSE" \ --ignore="^/node_modules/inflight/README.md" \ --ignore="^/node_modules/inherits/LICENSE" \ --ignore="^/node_modules/inherits/README.md" \ --ignore="^/node_modules/intro.js/CODE_OF_CONDUCT.md" \ --ignore="^/node_modules/intro.js/CONTRIBUTING.md" \ --ignore="^/node_modules/intro.js/Makefile" \ --ignore="^/node_modules/intro.js/README.md" \ --ignore="^/node_modules/intro.js/changelog.md" \ --ignore="^/node_modules/intro.js/docs" \ --ignore="^/node_modules/intro.js/example" \ --ignore="^/node_modules/intro.js/license.md" \ --ignore="^/node_modules/is-obj/license" \ --ignore="^/node_modules/is-obj/readme.md" \ --ignore="^/node_modules/isarray/README.md" \ --ignore="^/node_modules/lodash/LICENSE" \ --ignore="^/node_modules/lodash/README.md" \ --ignore="^/node_modules/minimatch/LICENSE" \ --ignore="^/node_modules/minimatch/README.md" \ --ignore="^/node_modules/minimist/LICENSE" \ --ignore="^/node_modules/minimist/example" \ --ignore="^/node_modules/minimist/readme.markdown" \ --ignore="^/node_modules/minimist/test" \ --ignore="^/node_modules/mkdirp/LICENSE" \ --ignore="^/node_modules/mkdirp/bin/usage.txt" \ --ignore="^/node_modules/mkdirp/examples" \ --ignore="^/node_modules/mkdirp/readme.markdown" \ --ignore="^/node_modules/mkdirp/test" \ --ignore="^/node_modules/ms/LICENSE.md" \ --ignore="^/node_modules/ms/README.md" \ --ignore="^/node_modules/nan/CHANGELOG.md" \ --ignore="^/node_modules/nan/LICENSE.md" \ --ignore="^/node_modules/nan/README.md" \ --ignore="^/node_modules/nan/doc" \ --ignore="^/node_modules/nan/nan.h" \ --ignore="^/node_modules/nan/nan_callbacks.h" \ --ignore="^/node_modules/nan/nan_callbacks_12_inl.h" \ --ignore="^/node_modules/nan/nan_callbacks_pre_12_inl.h" \ --ignore="^/node_modules/nan/nan_converters.h" \ --ignore="^/node_modules/nan/nan_converters_43_inl.h" \ --ignore="^/node_modules/nan/nan_converters_pre_43_inl.h" \ --ignore="^/node_modules/nan/nan_implementation_12_inl.h" \ --ignore="^/node_modules/nan/nan_implementation_pre_12_inl.h" \ --ignore="^/node_modules/nan/nan_maybe_43_inl.h" \ --ignore="^/node_modules/nan/nan_maybe_pre_43_inl.h" \ --ignore="^/node_modules/nan/nan_new.h" \ --ignore="^/node_modules/nan/nan_object_wrap.h" \ --ignore="^/node_modules/nan/nan_persistent_12_inl.h" \ --ignore="^/node_modules/nan/nan_persistent_pre_12_inl.h" \ --ignore="^/node_modules/nan/nan_string_bytes.h" \ --ignore="^/node_modules/nan/nan_typedarray_contents.h" \ --ignore="^/node_modules/nan/nan_weak.h" \ --ignore="^/node_modules/nan/tools/README.md" \ --ignore="^/node_modules/once/LICENSE" \ --ignore="^/node_modules/once/README.md" \ --ignore="^/node_modules/os-tmpdir/license" \ --ignore="^/node_modules/os-tmpdir/readme.md" \ --ignore="^/node_modules/path-exists/license" \ --ignore="^/node_modules/path-exists/readme.md" \ --ignore="^/node_modules/path-is-absolute/license" \ --ignore="^/node_modules/path-is-absolute/readme.md" \ --ignore="^/node_modules/photon/CNAME" \ --ignore="^/node_modules/photon/CONTRIBUTING.md" \ --ignore="^/node_modules/photon/LICENSE" \ --ignore="^/node_modules/photon/README.md" \ --ignore="^/node_modules/photon/docs" \ --ignore="^/node_modules/photon/sass" \ --ignore="^/node_modules/pinkie-promise/license" \ --ignore="^/node_modules/pinkie-promise/readme.md" \ --ignore="^/node_modules/pinkie/license" \ --ignore="^/node_modules/pinkie/readme.md" \ --ignore="^/node_modules/pkg-up/license" \ --ignore="^/node_modules/pkg-up/readme.md" \ --ignore="^/node_modules/readable-stream/LICENSE" \ --ignore="^/node_modules/readable-stream/README.md" \ --ignore="^/node_modules/ref-struct/History.md" \ --ignore="^/node_modules/ref-struct/README.md" \ --ignore="^/node_modules/ref/CHANGELOG.md" \ --ignore="^/node_modules/ref/README.md" \ --ignore="^/node_modules/ref/build/Makefile" \ --ignore="^/node_modules/ref/build/Release/.deps/Release/obj.target/binding/src" \ --ignore="^/node_modules/ref/build/Release/obj.target/binding/src" \ --ignore="^/node_modules/ref/build/binding.Makefile" \ --ignore="^/node_modules/ref/build/binding.target.mk" \ --ignore="^/node_modules/ref/docs" \ --ignore="^/node_modules/ref/src" \ --ignore="^/node_modules/ref/test" \ --ignore="^/node_modules/rimraf/LICENSE" \ --ignore="^/node_modules/rimraf/README.md" \ --ignore="^/node_modules/stream-parser/History.md" \ --ignore="^/node_modules/stream-parser/LICENSE" \ --ignore="^/node_modules/stream-parser/README.md" \ --ignore="^/node_modules/stream-parser/node_modules/debug/.npmignore" \ --ignore="^/node_modules/stream-parser/node_modules/debug/History.md" \ --ignore="^/node_modules/stream-parser/node_modules/debug/Makefile" \ --ignore="^/node_modules/stream-parser/node_modules/debug/Readme.md" \ --ignore="^/node_modules/stream-parser/node_modules/ms/license.md" \ --ignore="^/node_modules/stream-parser/node_modules/ms/README.md" \ --ignore="^/node_modules/stream-parser/test" \ --ignore="^/node_modules/string_decoder/LICENSE" \ --ignore="^/node_modules/string_decoder/README.md" \ --ignore="^/node_modules/temp/LICENSE" \ --ignore="^/node_modules/temp/README.md" \ --ignore="^/node_modules/temp/examples" \ --ignore="^/node_modules/temp/node_modules/rimraf/AUTHORS" \ --ignore="^/node_modules/temp/node_modules/rimraf/LICENSE" \ --ignore="^/node_modules/temp/node_modules/rimraf/README.md" \ --ignore="^/node_modules/temp/node_modules/rimraf/test" \ --ignore="^/node_modules/temp/test" \ --ignore="^/node_modules/tunajs/CONTRIBUTE.md" \ --ignore="^/node_modules/tunajs/README.md" \ --ignore="^/node_modules/tunajs/tests" \ --ignore="^/node_modules/wav/History.md" \ --ignore="^/node_modules/wav/README.md" \ --ignore="^/node_modules/wav/examples" \ --ignore="^/node_modules/wav/test" \ --ignore="^/node_modules/wave-recorder/README.md" \ --ignore="^/node_modules/wave-recorder/example.js" \ --ignore="^/node_modules/wrappy/LICENSE" \ --ignore="^/node_modules/wrappy/README.md" \ --ignore="^/node_modules/xtend/LICENCE" \ --ignore="^/node_modules/xtend/Makefile" \ --ignore="^/node_modules/xtend/README.md" \ --ignore="^/node_modules/xtend/test.js"
ち・か・ら・お・し!
これ、絶対、保守性悪いわ…
もうやっちゃったから、このまま残すけど…
たいしたアプリサイズの削減にもならないし、皆は、ここまではやらない方が良いぞ(^_^;)