Electron原生モジュールのコンパイルについてのポイントのまとめ
4189 ワード
Electronは、PC端末のプラットフォームにまたがる開発フレームワークであり、nodejsを通じて、それらが提供する様々な底のAPIを呼び出すことができます.しかし、Electronは、自身のファイルサイズが小さく、持続可能な開発を保証するために、APIの数を制御している.幸い、ElectronもNodejs元モジュールをサポートしていますが、Electronの頭ファイルで再コンパイルが必要です.
プロジェクトの原本のnpmライブラリの管理が乱れていて、各クラスのディレクトリにはpackage.jsonがあります.そして、すべての使用を同期させていません.また、package-lock.jsonを通じてバージョン番号管理もしていません.そのため、以前は新しい設備、特にmac osで下開発と包装環境を新たに配合したいなら、難しいです.基本はマニュアルでnode_をコピーします.modules…
最近Linuxに開発環境を構築する必要があるということをきっかけに、プロジェクト全体の構造を再整理する.オペレーティングシステムを変えたので、プロジェクトに関わるNativeライブラリは、再コンパイルが必要です.
npmrcの設定
Electron公式文書で与えられたソリューションは、npmrcファイルに関連環境変数を配置することにより、npmがNativeモジュールをダウンロードする際に、その対応するElectronバージョンを自動的にダウンロードするように助けられます.
NodejsのNativeモジュールは、ルートディレクトリの下に
Mac OS Xcode、Terminal上で を実行します. Python v 2.7は、一般的にはすでにデフォルトで インストールされています.
Windows C/C++ツール、例えばGCC python v 2.7 node-gyp手動コンパイルElectronモジュール:
実践
簡単なNativeモジュールは、npmrcを配置した後、直接ダウンロードできます.必要なファイルがあります.一部では、ElectronのHeaders以外にも、ローカル環境のサポートが必要です.例えば、 canvas canvasは、Cairoベースの画像処理ライブラリであり、このライブラリのコンパイルは、以下の環境をローカルにインストールする必要があります.
OS
Command
OS X
Using Homebrew:
See the wiki
以上の環境インストールが完了した後: を見ることができます. sqlite 3 sqlity 3自体のコンパイルは複雑ではありません.お手数をおかけしているのはbuilding for sql cipherです.暗号化されたsqlite 3バージョンをコンパイルします.MacOS 締め括りをつける
Nodejsの原生モジュールは、Electron自体にもelectro-rebuildを提供するというツールがありますが、Nativeモジュールの自動コンパイルを実現するためにどのように配置するかを紹介しています.まだ試みていません.一般的な状況を考慮して、一つのマシンで三つのプラットフォームを包装したインストールパッケージです.結局は違うオペレーティングシステムでNativeモジュールを再コンパイルします.ですから、node-gypの手動コンパイルをマスターするのがもっと重要です.
転載先:https://juejin.im/post/5c3326aee51d45524a11fd7d
プロジェクトの原本のnpmライブラリの管理が乱れていて、各クラスのディレクトリにはpackage.jsonがあります.そして、すべての使用を同期させていません.また、package-lock.jsonを通じてバージョン番号管理もしていません.そのため、以前は新しい設備、特にmac osで下開発と包装環境を新たに配合したいなら、難しいです.基本はマニュアルでnode_をコピーします.modules…
最近Linuxに開発環境を構築する必要があるということをきっかけに、プロジェクト全体の構造を再整理する.オペレーティングシステムを変えたので、プロジェクトに関わるNativeライブラリは、再コンパイルが必要です.
npmrcの設定
Electron公式文書で与えられたソリューションは、npmrcファイルに関連環境変数を配置することにより、npmがNativeモジュールをダウンロードする際に、その対応するElectronバージョンを自動的にダウンロードするように助けられます.
npm config ls -l
npmrcは異なるシステムでの経路が異なり、上のコマンドでその位置を見つけ、手動で内容を追加します.// Electron
target=1.7.11
arch=x64
target_arch=x64
disturl=https://atom.io/download/electron
runtime=electron
build_from_source=true
//target_platform=darwin
targetはElectronバージョンをコンパイルすると言っていますが、ご当地のElectronバージョン番号と一致する必要があります.ここ1.7.xは違いがあります.影響がない場合、エラーが発生する可能性があります.'xx.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 57. This version of Node.js requires
NODE_MODULE_VERSION 54. Please try re-compiling or re-installing
手動コンパイルNodejsのNativeモジュールは、ルートディレクトリの下に
binding.gyp
というファイルがあります.これはChromiumチームがnodejsのクロスプラットフォームのために設計したファイルです.node-gypやnode-pre-gypなどのnodejsコマンドツールでNativeモジュールを再コンパイルできます.npm i -g node-gyp
node-gypを使う前に、システムは事前に以下の環境をインストールする必要があります.Mac OS
xcode-select --install
Windows
npm i -g production windows-build-tools
Linuxcd node_modules/addon
node-gyp rebuild --target=1.7.11 --arch=x64 --target_platform=darwin --dist-url=https://atom.io/download/atom-shell
npmrcを作ったら、直接node-gyp rebuild
でいいです.実践
簡単なNativeモジュールは、npmrcを配置した後、直接ダウンロードできます.必要なファイルがあります.一部では、ElectronのHeaders以外にも、ローカル環境のサポートが必要です.例えば、
canvas
及びsqlite3
OS
Command
OS X
Using Homebrew:
brew install pkg-config cairo pango libpng jpeg giflib librsvg
Ubuntsudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
Fedorasudo yum install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel
ソラリスpkgin install cairo pango pkg-config xproto renderproto kbproto xextproto
WindowsSee the wiki
以上の環境インストールが完了した後:
cd node_modules/canvas
node-gyp rebuild
は、canvas/build/Release/
の下でcanvas.nodeファイルを生成するnpm install sqlite3 --build-from-source --sqlite_libname=sqlcipher --sqlite=`brew --prefix` --runtime=electron --target=1.7.11 --dist-url=https://atom.io/download/electron
あるいは:cd node_modules/sqlite3
node-gyp rebuild --sqlite_libname=sqlcipher --sqlite=`brew --prefix` --runtime=electron --target=1.7.11 --dist-url=https://atom.io/download/electron --module_path=../lib/binding/electron-v1.7-darwin-x64 --module_name=node-sqlite3
macosには何の問題もありませんでしたが、linuxでは長い間苦しめられました.sqlite 3暗号化には、基本的なg++、sqliteコンパイルに必要なlibsqlite3-dev
、ldモジュールに必要なsqlcipherなど、底の環境の様々なサポートが必要です.これらの問題は普遍性がないので、展開しないで、解決方法はつまり間違ってGoogleに行くことです.Nodejsの原生モジュールは、Electron自体にもelectro-rebuildを提供するというツールがありますが、Nativeモジュールの自動コンパイルを実現するためにどのように配置するかを紹介しています.まだ試みていません.一般的な状況を考慮して、一つのマシンで三つのプラットフォームを包装したインストールパッケージです.結局は違うオペレーティングシステムでNativeモジュールを再コンパイルします.ですから、node-gypの手動コンパイルをマスターするのがもっと重要です.
転載先:https://juejin.im/post/5c3326aee51d45524a11fd7d