Import electron-prebuilt history into npm folder
This commit is contained in:
commit
9cd5f0cddd
15 changed files with 8558 additions and 0 deletions
5
npm/.gitignore
vendored
Normal file
5
npm/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
node_modules
|
||||
dist
|
||||
path.txt
|
||||
.DS_Store
|
||||
npm-debug.log
|
9
npm/.npmignore
Normal file
9
npm/.npmignore
Normal file
|
@ -0,0 +1,9 @@
|
|||
dist/
|
||||
path.txt
|
||||
.npmignore
|
||||
.travis.yml
|
||||
appveyor.yml
|
||||
CONTRIBUTING.md
|
||||
issue_template.md
|
||||
test/
|
||||
npm-debug.log
|
13
npm/.travis.yml
Normal file
13
npm/.travis.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
os:
|
||||
- linux
|
||||
- osx
|
||||
language: node_js
|
||||
node_js:
|
||||
- '0.10'
|
||||
- '0.12'
|
||||
- '4'
|
||||
- '5'
|
||||
- '6'
|
||||
branches:
|
||||
only:
|
||||
- master
|
7
npm/CONTRIBUTING.md
Normal file
7
npm/CONTRIBUTING.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
releases for this module are handled by https://github.com/johnmuhl/electron-prebuilt-updater
|
||||
|
||||
versions published to npm should match the versions published to [github releases for electron](https://github.com/electron/electron/releases)
|
||||
|
||||
coding style should be `standard`:
|
||||
|
||||
[](https://github.com/feross/standard)
|
7
npm/LICENSE
Normal file
7
npm/LICENSE
Normal file
|
@ -0,0 +1,7 @@
|
|||
Copyright (c) 2015 Mathias Buus-Madsen, Max Ogden and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
114
npm/README.md
Normal file
114
npm/README.md
Normal file
|
@ -0,0 +1,114 @@
|
|||
# electron-prebuilt
|
||||
|
||||
[](http://travis-ci.org/electron-userland/electron-prebuilt)
|
||||
[](https://ci.appveyor.com/project/electron-bot/electron-prebuilt/branch/master)
|
||||
|
||||
[](https://www.npmjs.com/package/electron)
|
||||
|
||||
Install [Electron](https://github.com/electron/electron) prebuilt binaries for
|
||||
command-line use using npm. This module helps you easily install the `electron`
|
||||
command for use on the command line without having to compile anything.
|
||||
|
||||
[Electron](http://electron.atom.io) is a JavaScript runtime that bundles Node.js
|
||||
and Chromium. You use it similar to the `node` command on the command line for
|
||||
executing JavaScript programs. For more info you can read [this intro blog post](http://maxogden.com/electron-fundamentals.html)
|
||||
or dive into the [Electron documentation](http://electron.atom.io/docs).
|
||||
|
||||
## Installation
|
||||
|
||||
**Note** As of version 1.3.1, this package is published to npm under two names:
|
||||
`electron` and `electron-prebuilt`. You can currently use either name, but
|
||||
`electron` is recommended, as the `electron-prebuilt` name is deprecated, and
|
||||
will only be published until the end of 2016.
|
||||
|
||||
Download and install the latest build of Electron for your OS and add it to your
|
||||
project's `package.json` as a `devDependency`:
|
||||
|
||||
```shell
|
||||
npm install electron --save-dev
|
||||
```
|
||||
|
||||
This is the preferred way to use Electron, as it doesn't require users to
|
||||
install Electron globally.
|
||||
|
||||
You can also use the `-g` flag (global) to symlink it into your PATH:
|
||||
|
||||
```shell
|
||||
npm install -g electron
|
||||
```
|
||||
|
||||
If that command fails with an `EACCESS` error you may have to run it again with `sudo`:
|
||||
|
||||
```shell
|
||||
sudo npm install -g electron
|
||||
```
|
||||
|
||||
Now you can just run `electron` to run electron:
|
||||
|
||||
```shell
|
||||
electron
|
||||
```
|
||||
|
||||
If you need to use an HTTP proxy you can [set these environment variables](https://github.com/request/request/tree/f0c4ec061141051988d1216c24936ad2e7d5c45d#controlling-proxy-behaviour-using-environment-variables).
|
||||
|
||||
If you want to change the architecture that is downloaded (e.g., `ia32` on an
|
||||
`x64` machine), you can use the `--arch` flag with npm install or set the
|
||||
`npm_config_arch` environment variable:
|
||||
|
||||
```shell
|
||||
npm install --arch=ia32 electron
|
||||
```
|
||||
|
||||
If you need to force a re-download of the asset and the SHASUM file set the `force_no_cache` enviroment variable to true.
|
||||
|
||||
## About
|
||||
|
||||
Works on Mac, Windows and Linux OSes that Electron supports (e.g. Electron
|
||||
[does not support Windows XP](https://github.com/electron/electron/issues/691)).
|
||||
|
||||
The version numbers of this module match the version number of the [official
|
||||
Electron releases](https://github.com/electron/electron/releases), which
|
||||
[do not follow semantic versioning](http://electron.atom.io/docs/tutorial/electron-versioning/).
|
||||
|
||||
This module is automatically released whenever a new version of Electron is
|
||||
released thanks to [electron-prebuilt-updater](https://github.com/electron/electron-prebuilt-updater),
|
||||
originally written by [John Muhl](https://github.com/johnmuhl/).
|
||||
|
||||
## Usage
|
||||
|
||||
First, you have to [write an Electron application](http://electron.atom.io/docs/tutorial/quick-start/).
|
||||
|
||||
Then, you can run your app using:
|
||||
|
||||
```shell
|
||||
electron your-app/
|
||||
```
|
||||
|
||||
## Related modules
|
||||
|
||||
- [electron-packager](https://github.com/electron-userland/electron-packager) -
|
||||
Package and distribute your Electron app with OS-specific bundles
|
||||
(.app, .exe etc)
|
||||
- [electron-builder](https://github.com/electron-userland/electron-builder) -
|
||||
create installers
|
||||
- [menubar](https://github.com/maxogden/menubar) - high level way to create
|
||||
menubar desktop applications with electron
|
||||
|
||||
Find more at the [awesome-electron](https://github.com/sindresorhus/awesome-electron) list.
|
||||
|
||||
## Programmatic usage
|
||||
|
||||
Most people use this from the command line, but if you require `electron` inside
|
||||
your **Node app** (not your Electron app) it will return the file path to the
|
||||
binary. Use this to spawn Electron from Node scripts:
|
||||
|
||||
```javascript
|
||||
var electron = require('electron')
|
||||
var proc = require('child_process')
|
||||
|
||||
// will print something similar to /Users/maf/.../Electron
|
||||
console.log(electron)
|
||||
|
||||
// spawn Electron
|
||||
var child = proc.spawn(electron)
|
||||
```
|
25
npm/appveyor.yml
Normal file
25
npm/appveyor.yml
Normal file
|
@ -0,0 +1,25 @@
|
|||
build: off
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- nodejs_version: "0.10"
|
||||
- nodejs_version: "0.12"
|
||||
- nodejs_version: "4"
|
||||
- nodejs_version: "5"
|
||||
- nodejs_version: "6"
|
||||
|
||||
skip_tags: true
|
||||
|
||||
install:
|
||||
- ps: Install-Product node $env:nodejs_version
|
||||
- npm install npm
|
||||
- .\node_modules\.bin\npm install
|
||||
|
||||
test_script:
|
||||
- node --version
|
||||
- .\node_modules\.bin\npm --version
|
||||
- .\node_modules\.bin\npm test
|
10
npm/cli.js
Executable file
10
npm/cli.js
Executable file
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
var electron = require('./')
|
||||
|
||||
var proc = require('child_process')
|
||||
|
||||
var child = proc.spawn(electron, process.argv.slice(2), {stdio: 'inherit'})
|
||||
child.on('close', function (code) {
|
||||
process.exit(code)
|
||||
})
|
8150
npm/electron.d.ts
vendored
Normal file
8150
npm/electron.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load diff
10
npm/index.js
Normal file
10
npm/index.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
var fs = require('fs')
|
||||
var path = require('path')
|
||||
|
||||
var pathFile = path.join(__dirname, 'path.txt')
|
||||
|
||||
if (fs.existsSync(pathFile)) {
|
||||
module.exports = path.join(__dirname, fs.readFileSync(pathFile, 'utf-8'))
|
||||
} else {
|
||||
throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again')
|
||||
}
|
65
npm/install.js
Executable file
65
npm/install.js
Executable file
|
@ -0,0 +1,65 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
// maintainer note - x.y.z-ab version in package.json -> x.y.z
|
||||
var version = require('./package').version.replace(/-.*/, '')
|
||||
|
||||
var fs = require('fs')
|
||||
var os = require('os')
|
||||
var path = require('path')
|
||||
var extract = require('extract-zip')
|
||||
var download = require('electron-download')
|
||||
|
||||
var installedVersion = null
|
||||
try {
|
||||
installedVersion = fs.readFileSync(path.join(__dirname, 'dist', 'version'), 'utf-8').replace(/^v/, '')
|
||||
} catch (ignored) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
var platformPath = getPlatformPath()
|
||||
|
||||
if (installedVersion === version && fs.existsSync(path.join(__dirname, platformPath))) {
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
// downloads if not cached
|
||||
download({
|
||||
cache: process.env.electron_config_cache,
|
||||
version: version,
|
||||
platform: process.env.npm_config_platform,
|
||||
arch: process.env.npm_config_arch,
|
||||
strictSSL: process.env.npm_config_strict_ssl === 'true',
|
||||
force: process.env.force_no_cache === 'true',
|
||||
quiet: ['info', 'verbose', 'silly', 'http'].indexOf(process.env.npm_config_loglevel) === -1
|
||||
}, extractFile)
|
||||
|
||||
// unzips and makes path.txt point at the correct executable
|
||||
function extractFile (err, zipPath) {
|
||||
if (err) return onerror(err)
|
||||
extract(zipPath, {dir: path.join(__dirname, 'dist')}, function (err) {
|
||||
if (err) return onerror(err)
|
||||
fs.writeFile(path.join(__dirname, 'path.txt'), platformPath, function (err) {
|
||||
if (err) return onerror(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function onerror (err) {
|
||||
throw err
|
||||
}
|
||||
|
||||
function getPlatformPath () {
|
||||
var platform = process.env.npm_config_platform || os.platform()
|
||||
|
||||
switch (platform) {
|
||||
case 'darwin':
|
||||
return 'dist/Electron.app/Contents/MacOS/Electron'
|
||||
case 'freebsd':
|
||||
case 'linux':
|
||||
return 'dist/electron'
|
||||
case 'win32':
|
||||
return 'dist/electron.exe'
|
||||
default:
|
||||
throw new Error('Electron builds are not available on platform: ' + platform)
|
||||
}
|
||||
}
|
6
npm/issue_template.md
Normal file
6
npm/issue_template.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
If you're having an issue _installing_ Electron, this is the place to report it.
|
||||
|
||||
If you're having an issue _using_ Electron, please report it at https://github.com/electron/electron/issues
|
||||
|
||||
* Electron version:
|
||||
* Operating system:
|
36
npm/package.json
Normal file
36
npm/package.json
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"name": "electron",
|
||||
"version": "1.7.4",
|
||||
"description": "Install prebuilt electron binaries for the command-line using npm",
|
||||
"repository": "https://github.com/electron-userland/electron-prebuilt",
|
||||
"scripts": {
|
||||
"cache-clean": "rm -rf ~/.electron && rm -rf dist",
|
||||
"postinstall": "node install.js",
|
||||
"pretest": "npm run cache-clean && npm run postinstall",
|
||||
"test": "tape test/*.js && standard"
|
||||
},
|
||||
"bin": {
|
||||
"electron": "cli.js"
|
||||
},
|
||||
"main": "index.js",
|
||||
"types": "electron.d.ts",
|
||||
"dependencies": {
|
||||
"@types/node": "^7.0.18",
|
||||
"electron-download": "^3.0.1",
|
||||
"extract-zip": "^1.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"home-path": "^0.1.1",
|
||||
"path-exists": "^2.0.0",
|
||||
"standard": "^5.4.1",
|
||||
"tape": "^3.0.1"
|
||||
},
|
||||
"author": "Mathias Buus",
|
||||
"license": "MIT",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
},
|
||||
"keywords": [
|
||||
"electron"
|
||||
]
|
||||
}
|
86
npm/test/errors.js
Normal file
86
npm/test/errors.js
Normal file
|
@ -0,0 +1,86 @@
|
|||
var fs = require('fs')
|
||||
var tape = require('tape')
|
||||
var path = require('path')
|
||||
var childProcess = require('child_process')
|
||||
|
||||
tape('install fails for unsupported platforms', function (t) {
|
||||
install({npm_config_platform: 'android'}, function (code, stderr) {
|
||||
t.notEqual(stderr.indexOf('Electron builds are not available on platform: android'), -1, 'has error message')
|
||||
t.notEqual(code, 0, 'exited with error')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
tape('install fails for unsupported architectures', function (t) {
|
||||
install({
|
||||
npm_config_arch: 'midcentury',
|
||||
npm_config_platform: 'win32',
|
||||
HOME: process.env.HOME,
|
||||
USERPROFILE: process.env.USERPROFILE
|
||||
}, function (code, stderr) {
|
||||
t.notEqual(stderr.indexOf('Failed to find Electron'), -1, 'has error message')
|
||||
t.notEqual(stderr.indexOf('win32-midcentury'), -1, 'has error message')
|
||||
t.notEqual(code, 0, 'exited with error')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
tape('require fails for corrupted installs', function (t) {
|
||||
cli(function (code, stderr) {
|
||||
t.notEqual(stderr.indexOf('Electron failed to install correctly'), -1, 'has error message')
|
||||
t.notEqual(code, 0, 'exited with error')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
function install (env, callback) {
|
||||
var restoreFile = removeFile(path.join(__dirname, '..', 'dist', 'version'))
|
||||
|
||||
var installPath = path.join(__dirname, '..', 'install.js')
|
||||
var installProcess = childProcess.fork(installPath, {
|
||||
silent: true,
|
||||
env: env
|
||||
})
|
||||
|
||||
var stderr = ''
|
||||
installProcess.stderr.on('data', function (data) {
|
||||
stderr += data
|
||||
})
|
||||
|
||||
installProcess.on('close', function (code) {
|
||||
restoreFile()
|
||||
callback(code, stderr)
|
||||
})
|
||||
}
|
||||
|
||||
function cli (callback) {
|
||||
var restoreFile = removeFile(path.join(__dirname, '..', 'path.txt'))
|
||||
|
||||
var cliPath = path.join(__dirname, '..', 'cli.js')
|
||||
var cliProcess = childProcess.fork(cliPath, {
|
||||
silent: true
|
||||
})
|
||||
|
||||
var stderr = ''
|
||||
cliProcess.stderr.on('data', function (data) {
|
||||
stderr += data
|
||||
})
|
||||
|
||||
cliProcess.on('close', function (code) {
|
||||
restoreFile()
|
||||
callback(code, stderr)
|
||||
})
|
||||
}
|
||||
|
||||
function removeFile (filePath) {
|
||||
var contents = null
|
||||
if (fs.existsSync(filePath)) {
|
||||
contents = fs.readFileSync(filePath)
|
||||
fs.unlinkSync(filePath)
|
||||
}
|
||||
return function restoreFile () {
|
||||
if (contents != null) {
|
||||
fs.writeFileSync(filePath, contents)
|
||||
}
|
||||
}
|
||||
}
|
15
npm/test/index.js
Normal file
15
npm/test/index.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
var tape = require('tape')
|
||||
var electron = require('../')
|
||||
var path = require('path')
|
||||
var pathExists = require('path-exists')
|
||||
var getHomePath = require('home-path')()
|
||||
|
||||
tape('has local binary', function (t) {
|
||||
t.ok(pathExists.sync(electron), 'electron was downloaded')
|
||||
t.end()
|
||||
})
|
||||
|
||||
tape('has cache folder', function (t) {
|
||||
t.ok(pathExists.sync(path.join(getHomePath, './.electron')), 'cache exists')
|
||||
t.end()
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue