Skip to content

Commit 744d911

Browse files
committed
Initial
0 parents  commit 744d911

20 files changed

+10566
-0
lines changed

.babelrc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"presets": [
3+
"env"
4+
],
5+
"plugins": ["transform-object-rest-spread"]
6+
}

.eslintrc.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// http://eslint.org/docs/user-guide/configuring
2+
3+
module.exports = {
4+
root: true,
5+
parser: "babel-eslint",
6+
parserOptions: {
7+
sourceType: "module"
8+
},
9+
env: {
10+
"browser": true,
11+
"es6": true,
12+
"worker": true,
13+
"serviceworker": true,
14+
"jest": true
15+
},
16+
plugins: [
17+
"import",
18+
"html"
19+
],
20+
extends: ["eslint-config-standard"],
21+
"rules": {
22+
"jsx-quotes": 1,
23+
"no-debugger": process.env.NODE_ENV === "production" ? 2 : 1,
24+
"comma-dangle": [2, "never"],
25+
"complexity": 2,
26+
"space-before-function-paren": [0, "never"],
27+
"no-unused-vars": 1,
28+
"camelcase": 2
29+
}
30+
};

.gitignore

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
*.code-workspace
6+
7+
# Runtime data
8+
pids
9+
*.pid
10+
*.seed
11+
12+
# Directory for instrumented libs generated by jscoverage/JSCover
13+
lib-cov
14+
15+
# Coverage directory used by tools like istanbul
16+
coverage
17+
18+
# nyc test coverage
19+
.nyc_output
20+
21+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
22+
.grunt
23+
24+
# node-waf configuration
25+
.lock-wscript
26+
27+
# Compiled binary addons (http://nodejs.org/api/addons.html)
28+
build/Release
29+
30+
# Dependency directories
31+
node_modules
32+
jspm_packages
33+
34+
# Optional npm cache directory
35+
.npm
36+
37+
# Optional REPL history
38+
.node_repl_history
39+
*.vscode
40+
*.idea
41+
42+
*.sublime-*
43+
*.editorconfig
44+
*.code-workspace
45+
46+
*.map*
47+
*.DS_Store
48+
vue-mapbox-demo
49+
checklist.txt

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# vue-mapbox [![Build Status](https://travis-ci.org/soal/vue-mapbox.svg?branch=master)](https://travis-ci.org/soal/vue-mapbox) [![npm version](https://badge.fury.io/js/vue-mapbox.svg)](https://badge.fury.io/js/vue-mapbox)
2+
3+
> Combine powers of [Vue.js](https://vuejs.org/) and [Mapbox Gl JS](https://mapbox.com/mapbox-gl-js)
4+
5+
Vue-mapbox is wrapper around Mapbox GL JS library that provides vueish-way to interact with the map.
6+
7+
[Description and documentation](https://soal.github.io/vue-mapbox)
8+
9+
## Size
10+
~ 39 kB minified
11+
~ 7 kB minified and gzipped
12+
13+
## Browser compatibility
14+
_Coming soon_
15+
16+
17+
## Development
18+
```
19+
git clone git@github.com:soal/vue-mapbox.git
20+
cd vue-mapbox
21+
npm install
22+
```
23+
Running in dev mod:
24+
```
25+
npm run dev
26+
```
27+
Running tests:
28+
```
29+
npm run tests
30+
```
31+
Build for production:
32+
```
33+
npm run build
34+
```
35+
36+
Inspired by KoRiGaN's [Vue2Leaflet](https://github.com/KoRiGaN/Vue2Leaflet).

build/build.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
require('./check-versions')()
2+
3+
process.env.NODE_ENV = 'production'
4+
5+
var ora = require('ora')
6+
var rm = require('rimraf')
7+
var chalk = require('chalk')
8+
var webpack = require('webpack')
9+
var config = require('../config')
10+
var umdWebpackConfig = require('./webpack.umd.conf')
11+
var browserWebpackConfig = require('./webpack.browser.conf')
12+
13+
var spinner = ora('building for library...')
14+
spinner.start()
15+
16+
rm(config.build.assetsRoot, err => {
17+
if (err) throw err
18+
webpack(umdWebpackConfig, function (err, stats) {
19+
spinner.stop()
20+
if (err) throw err
21+
process.stdout.write(stats.toString({
22+
colors: true,
23+
modules: false,
24+
children: false,
25+
chunks: true,
26+
chunkModules: false
27+
}) + '\n\n')
28+
29+
console.log(chalk.yellow(
30+
' Tip: Building UMD module complete.\n' +
31+
' Then users can import it as an es6 module: import vue-mapbox from \'vue-mapbox\'\n'
32+
))
33+
})
34+
35+
webpack(browserWebpackConfig, function (err, stats) {
36+
spinner.stop()
37+
if (err) throw err
38+
process.stdout.write(stats.toString({
39+
colors: true,
40+
modules: false,
41+
children: false,
42+
chunks: true,
43+
chunkModules: false
44+
}) + '\n\n')
45+
46+
console.log(chalk.yellow(
47+
' Tip: Building browser module complete.\n' +
48+
' Then users can add file to their app using <script> tag'
49+
))
50+
console.log(chalk.cyan(
51+
' Build complete.\n' +
52+
' Now you are ready to publish your library to npm'
53+
))
54+
})
55+
})

build/check-versions.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
var chalk = require('chalk')
2+
var semver = require('semver')
3+
var packageConfig = require('../package.json')
4+
var shell = require('shelljs')
5+
function exec (cmd) {
6+
return require('child_process').execSync(cmd).toString().trim()
7+
}
8+
9+
var versionRequirements = [
10+
{
11+
name: 'node',
12+
currentVersion: semver.clean(process.version),
13+
versionRequirement: packageConfig.engines.node
14+
}
15+
]
16+
17+
if (shell.which('npm')) {
18+
versionRequirements.push({
19+
name: 'npm',
20+
currentVersion: exec('npm --version'),
21+
versionRequirement: packageConfig.engines.npm
22+
})
23+
}
24+
25+
module.exports = function () {
26+
var warnings = []
27+
for (var i = 0; i < versionRequirements.length; i++) {
28+
var mod = versionRequirements[i]
29+
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
30+
warnings.push(mod.name + ': ' +
31+
chalk.red(mod.currentVersion) + ' should be ' +
32+
chalk.green(mod.versionRequirement)
33+
)
34+
}
35+
}
36+
37+
if (warnings.length) {
38+
console.log('')
39+
console.log(chalk.yellow('To use this template, you must update following to modules:'))
40+
console.log()
41+
for (var i = 0; i < warnings.length; i++) {
42+
var warning = warnings[i]
43+
console.log(' ' + warning)
44+
}
45+
console.log()
46+
process.exit(1)
47+
}
48+
}

build/webpack.base.conf.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
var path = require('path')
2+
var config = require('../config')
3+
4+
function resolve (dir) {
5+
return path.join(__dirname, '..', dir)
6+
}
7+
8+
module.exports = {
9+
entry: {
10+
'vue-mapbox-geocoder': './src/main.js'
11+
},
12+
output: {
13+
path: config.build.assetsRoot,
14+
filename: '[name].js',
15+
publicPath: config.build.assetsPublicPath
16+
},
17+
externals: {
18+
mapboxgl: 'mapboxgl',
19+
'vue-mapbox': 'vue-mapbox',
20+
vue: 'vue'
21+
},
22+
resolve: {
23+
extensions: ['.js', '.vue', '.json'],
24+
alias: {
25+
'@': resolve('src')
26+
}
27+
},
28+
module: {
29+
rules: [
30+
{
31+
test: /\.(js|vue)$/,
32+
loader: 'eslint-loader',
33+
enforce: 'pre',
34+
include: [resolve('src'), resolve('test')],
35+
options: {
36+
formatter: require('eslint-friendly-formatter')
37+
}
38+
},
39+
{
40+
test: /\.vue$/,
41+
loader: 'vue-loader'
42+
},
43+
{
44+
test: /\.js$/,
45+
loader: 'babel-loader',
46+
include: [resolve('src'), resolve('test')]
47+
}
48+
]
49+
}
50+
}

build/webpack.browser.conf.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
var webpack = require('webpack')
2+
var config = require('../config')
3+
var merge = require('webpack-merge')
4+
var baseWebpackConfig = require('./webpack.base.conf')
5+
6+
var env = process.env.NODE_ENV === 'testing'
7+
? require('../config/test.env')
8+
: config.build.env
9+
10+
baseWebpackConfig.entry = {
11+
'vue-mapbox-geocoder': './src/main.js'
12+
}
13+
14+
var webpackConfig = merge(baseWebpackConfig, {
15+
devtool: false,
16+
output: {
17+
path: config.build.assetsRoot,
18+
filename: '[name].min.js',
19+
library: 'VueMapboxGeocoder',
20+
libraryTarget: 'window'
21+
},
22+
plugins: [
23+
new webpack.DefinePlugin({
24+
'process.env': env
25+
}),
26+
new webpack.optimize.UglifyJsPlugin({
27+
compress: {
28+
warnings: false
29+
},
30+
sourceMap: true
31+
})
32+
]
33+
})
34+
35+
if (config.build.productionGzip) {
36+
var CompressionWebpackPlugin = require('compression-webpack-plugin')
37+
38+
webpackConfig.plugins.push(
39+
new CompressionWebpackPlugin({
40+
asset: '[path].gz[query]',
41+
algorithm: 'gzip',
42+
test: new RegExp(
43+
'\\.(' +
44+
config.build.productionGzipExtensions.join('|') +
45+
')$'
46+
),
47+
threshold: 10240,
48+
minRatio: 0.8
49+
})
50+
)
51+
}
52+
53+
module.exports = webpackConfig

build/webpack.dev.conf.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
var webpack = require('webpack')
2+
var config = require('../config')
3+
var merge = require('webpack-merge')
4+
var baseWebpackConfig = require('./webpack.base.conf')
5+
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
6+
7+
module.exports = merge(baseWebpackConfig, {
8+
devtool: '#cheap-module-eval-source-map',
9+
output: {
10+
path: config.build.assetsRoot,
11+
filename: '[name].umd.min.js',
12+
library: '[name]',
13+
libraryTarget: 'umd'
14+
},
15+
plugins: [
16+
new webpack.DefinePlugin({
17+
'process.env': config.dev.env
18+
}),
19+
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
20+
// new webpack.HotModuleReplacementPlugin(),
21+
new webpack.NoEmitOnErrorsPlugin(),
22+
new FriendlyErrorsPlugin()
23+
]
24+
})

build/webpack.test.conf.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// This is the webpack config used for unit tests.
2+
var webpack = require('webpack')
3+
var merge = require('webpack-merge')
4+
var baseConfig = require('./webpack.base.conf')
5+
6+
var webpackConfig = merge(baseConfig, {
7+
devtool: false,
8+
plugins: [
9+
new webpack.DefinePlugin({
10+
'process.env': require('../config/test.env')
11+
})
12+
]
13+
})
14+
15+
// no need for app entry during tests
16+
delete webpackConfig.entry
17+
18+
module.exports = webpackConfig

0 commit comments

Comments
 (0)