Skip to content

Commit 9ff4a4f

Browse files
committed
make tree shaking work with babel-preset-env
1 parent ef897e7 commit 9ff4a4f

File tree

17 files changed

+249
-73
lines changed

17 files changed

+249
-73
lines changed

.babelrc

Lines changed: 0 additions & 17 deletions
This file was deleted.

babel.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
export default {
2+
presets: [
3+
[
4+
'env',
5+
{
6+
modules: false,
7+
loose: true,
8+
useBuiltIns: true,
9+
targets: {
10+
node: false,
11+
browsers: [
12+
'last 4 versions',
13+
'not IE < 10'
14+
]
15+
}
16+
}
17+
]
18+
],
19+
plugins: [
20+
'add-module-exports',
21+
'transform-object-rest-spread'
22+
]
23+
}

build/config.js

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,22 @@
11
import path from 'path';
2+
import babelrc from '../babel';
23

34
const config = {
5+
babelrc,
46
projectRoot: path.join(__dirname, '../'),
57
rootPath: path.join(__dirname, '../dist'),
68
nodePath: path.join(__dirname, '../node_modules'),
79
srcPath: 'src',
810
docsPath: 'docs',
911
indexPath: 'docs/index.html',
1012
publicPath: '/',
11-
assetsPath: 'docs/src/assets'
12-
};
13-
14-
let dev = {
13+
assetsPath: 'docs/src/assets',
14+
env: {
15+
NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'production')
16+
},
1517
server: {
1618
port: process.env.PORT || '8080'
17-
},
18-
env: {
19-
NODE_ENV: '"development"'
2019
}
2120
};
2221

23-
let prod = {
24-
env: {
25-
NODE_ENV: '"production"'
26-
}
27-
};
28-
29-
if (config.env === 'production') {
30-
Object.assign(config, prod);
31-
} else {
32-
Object.assign(config, dev);
33-
}
34-
3522
export default config;

build/webpack/base.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,11 @@ export default {
2828
test: /\.(js|vue)$/,
2929
loader: 'eslint-loader',
3030
enforce: 'pre',
31-
include: [
32-
resolvePath('build'),
33-
resolvePath('src'),
34-
resolvePath('docs')
35-
],
3631
options: {
3732
fix: true,
3833
formatter: eslintFormatter
3934
}
4035
},
41-
{
42-
test: /\.js$/,
43-
loader: 'babel-loader',
44-
include: [
45-
resolvePath('build'),
46-
resolvePath('src'),
47-
resolvePath('docs')
48-
]
49-
},
5036
{
5137
test: /\.theme$/,
5238
use: ['raw-loader', 'sass-loader']

build/webpack/dev.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import FriendlyErrorsPlugin from 'friendly-errors-webpack-plugin';
55
import baseWebpackConfig from './base';
66
import config from '../config';
77

8+
delete config.babelrc.presets[0][1].modules;
9+
810
Object.keys(baseWebpackConfig.entry).forEach((name) => {
911
baseWebpackConfig.entry[name] = ['./build/server/client', ...[baseWebpackConfig.entry[name]]];
1012
});
1113

1214
export default merge(baseWebpackConfig, {
13-
devtool: '#cheap-module-eval-source-map',
15+
devtool: '#eval-source-map',
1416
module: {
1517
rules: [
1618
{
@@ -23,6 +25,12 @@ export default merge(baseWebpackConfig, {
2325
}
2426
}
2527
},
28+
{
29+
test: /\.js$/,
30+
loader: 'babel-loader',
31+
query: config.babelrc,
32+
exclude: /node_modules/
33+
},
2634
{
2735
test: /\.css$/,
2836
use: ['vue-style-loader', 'css-loader']
@@ -34,6 +42,10 @@ export default merge(baseWebpackConfig, {
3442
]
3543
},
3644
plugins: [
45+
new webpack.LoaderOptionsPlugin({
46+
minimize: true,
47+
debug: true
48+
}),
3749
new webpack.WatchIgnorePlugin([config.nodePath]),
3850
new webpack.HotModuleReplacementPlugin(),
3951
new webpack.NoEmitOnErrorsPlugin(),

build/webpack/prod-docs.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,18 @@ const conf = merge(baseConfig, {
3838
},
3939
postcss: [
4040
autoprefixer({
41-
browsers: ['last 3 versions', 'not IE < 10']
41+
browsers: ['last 4 versions', 'not IE < 10']
4242
}),
4343
mediaPacker()
4444
]
4545
}
4646
},
47+
{
48+
test: /\.js$/,
49+
loader: 'babel-loader',
50+
query: config.babelrc,
51+
exclude: /node_modules/
52+
},
4753
{
4854
test: /\.css$/,
4955
loader: ExtractTextPlugin.extract({

build/webpack/prod-lib.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,18 @@ export default merge(baseConfig, {
5555
},
5656
postcss: [
5757
autoprefixer({
58-
browsers: ['last 3 versions', 'not IE < 10']
58+
browsers: ['last 4 versions', 'not IE < 10']
5959
}),
6060
mediaPacker()
6161
]
6262
}
6363
},
64+
{
65+
test: /\.js$/,
66+
loader: 'babel-loader',
67+
query: config.babelrc,
68+
exclude: /node_modules/
69+
},
6470
{
6571
test: /\.css$/,
6672
loader: ExtractTextPlugin.extract({
@@ -89,7 +95,7 @@ export default merge(baseConfig, {
8995
plugins: [
9096
new webpack.LoaderOptionsPlugin({
9197
minimize: true,
92-
debug: false
98+
debug: true
9399
}),
94100
new webpack.optimize.UglifyJsPlugin({
95101
compress: {

docs/src/components/ExampleBox.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ var App = new Vue({
164164
this.codeString = JSON.stringify(data).replace(/"/g, '&quot;').replace(/'/g, '&apos;');
165165
166166
this.$nextTick(() => {
167-
console.log(this.$refs.initialJs);
168167
this.$refs.form.submit();
169168
});
170169
}

docs/src/components/ReleaseVersion.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div v-if="availableDocs.length > 1">
44
<span>Version:</span>
55
<md-select id="docs-select" v-model="currentDocs" @change="changeDocs">
6-
<md-option v-for="doc in availableDocs" :value="doc">{{ doc }}</md-option>
6+
<md-option v-for="doc in availableDocs" :key="doc" :value="doc">{{ doc }}</md-option>
77
</md-select>
88
</div>
99
</div>

src/components/mdChips/mdChips.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<md-input-container @click.native="applyInputFocus">
44
<md-chip
55
v-for="chip in selectedChips"
6+
:key="chip"
67
:md-deletable="!mdStatic"
78
:md-editable="!mdStatic"
89
:disabled="disabled"

src/components/mdDatePicker/mdDatePicker.vue

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
<div class="md-datepicker-days">
4848
<span class="md-empty" v-for="day in startOfMonth(month).getDay()" v-once></span>
4949

50-
<md-button
51-
class="md-icon-button"
50+
<button
51+
class="md-button md-icon-button"
5252
v-for="day in getDaysInMonth(month)"
5353
:key="day"
5454
:class="{
@@ -57,15 +57,16 @@
5757
}"
5858
@click.native="setDate(day)"
5959
v-once>
60+
<md-ink-ripple />
6061
{{ day }}
61-
</md-button>
62+
</button>
6263
</div>
6364
</div>
6465
</transition-group>
6566
</div>
6667

6768
<div class="md-datepicker-years" v-show="currentView === 'year'">
68-
<md-button
69+
<button
6970
class="md-dense md-datepicker-year"
7071
v-for="year in visibleYears()"
7172
:key="year"
@@ -77,22 +78,24 @@
7778
'data-' + year
7879
]"
7980
@click.native="setYear(year)">
81+
<md-ink-ripple />
8082
{{ year }}
81-
</md-button>
83+
</button>
8284
</div>
8385

8486
<div class="md-datepicker-months" v-show="currentView === 'month'">
85-
<md-button
86-
class="md-dense md-datepicker-month"
87+
<button
88+
class="md-button md-dense md-datepicker-month"
8789
v-for="(month, index) in locale.months"
8890
:key="month"
8991
:class="{
9092
'md-primary': isThisMonth(index),
9193
'md-primary md-raised': isSelectedMonth(index),
9294
}"
9395
@click.native="setMonth(index)">
96+
<md-ink-ripple />
9497
{{ month }}
95-
</md-button>
98+
</button>
9699
</div>
97100

98101
<div class="md-datepicker-actions md-dialog-actions">

src/components/mdSpinner/mdSpinner.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<transition name="md-spinner" appear>
33
<div class="md-spinner" :class="[themeClass, classes]":style="styles">
44
<svg class="md-spinner-draw" viewBox="25 25 50 50">
5-
<circle class="md-spinner-path" cx="50" cy="50" r="20" :stroke-width="mdStroke" :stroke-dasharray="dashProgress">
5+
<circle class="md-spinner-path" cx="50" cy="50" r="20" :stroke-width="mdStroke" :stroke-dasharray="dashProgress"></circle>
66
</svg>
77
</div>
88
</transition>

src/components/mdTable/mdTableEdit.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
};
4949
},
5050
realValue() {
51-
console.log(this.value);
51+
//console.log(this.value);
5252
}
5353
},
5454
methods: {

src/components/mdTable/mdTablePagination.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<span class="md-table-pagination-label">{{ mdLabel }}:</span>
44

55
<md-select v-model="currentSize" md-menu-class="md-pagination-select" @change="changeSize" v-if="mdPageOptions">
6-
<md-option v-for="amount in mdPageOptions" :value="amount">{{ amount }}</md-option>
6+
<md-option v-for="amount in mdPageOptions" :key="amount" :value="amount">{{ amount }}</md-option>
77
</md-select>
88

99
<span>{{ ((currentPage - 1) * currentSize) + 1 }}-{{ subTotal }} {{ mdSeparator }} {{ mdTotal }}</span>

src/core/components/mdInkRipple/mdInkRipple.vue

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
<style lang="scss" src="./mdInkRipple.scss"></style>
88

99
<script>
10+
import supportsPassiveEvent from '../../utils/supportsPassiveEvent';
11+
12+
const passiveEvent = supportsPassiveEvent ? { passive: true } : false;
13+
1014
const addEvent = (target, type, handler) => {
1115
if (type === 'start') {
12-
target.addEventListener('mousedown', handler);
13-
target.addEventListener('touchstart', handler);
16+
target.addEventListener('mousedown', handler, passiveEvent);
17+
target.addEventListener('touchstart', handler, passiveEvent);
1418
} else {
15-
target.addEventListener('mouseup', handler);
16-
target.addEventListener('touchend', handler);
19+
target.addEventListener('mouseup', handler, passiveEvent);
20+
target.addEventListener('touchend', handler, passiveEvent);
1721
}
1822
};
1923
const removeEvent = (target, type, handler) => {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
let supportsPassive = false;
2+
3+
try {
4+
const options = Object.defineProperty({}, 'passive', {
5+
get() {
6+
supportsPassive = true;
7+
}
8+
});
9+
10+
window.addEventListener('test', null, options);
11+
} catch (error) {
12+
throw new Error(error);
13+
}
14+
15+
export default supportsPassive;

0 commit comments

Comments
 (0)