1 | const path = require('path');
|
2 | const autoprefixer = require('autoprefixer');
|
3 | const webpack = require('webpack');
|
4 | const merge = require('webpack-merge');
|
5 |
|
6 | const base = require('./base');
|
7 |
|
8 | module.exports = arg =>
|
9 | merge(base(arg), {
|
10 | mode: 'development',
|
11 |
|
12 | module: {
|
13 | rules: [
|
14 | {
|
15 | test: /\.jsx?$/,
|
16 | include: path.resolve(arg.context, './src'),
|
17 | loader: 'babel-loader',
|
18 | options: arg.options.babelrc
|
19 | ? { babelrc: true }
|
20 | : {
|
21 | babelrc: false,
|
22 | presets: [
|
23 | [
|
24 | require.resolve('babel-preset-env'),
|
25 | {
|
26 | targets: {
|
27 | browsers: arg.options.browsers,
|
28 | },
|
29 | modules: false,
|
30 | spec: true,
|
31 | useBuiltIns: true,
|
32 | },
|
33 | ],
|
34 | require.resolve('babel-preset-stage-2'),
|
35 | require.resolve('babel-preset-react'),
|
36 | ],
|
37 | plugins: [require.resolve('babel-plugin-transform-decorators-legacy')],
|
38 | },
|
39 | },
|
40 | {
|
41 | test: /\.css$/,
|
42 | oneOf: [
|
43 | {
|
44 | exclude: /node_modules/,
|
45 | use: [
|
46 | 'style-loader',
|
47 | {
|
48 | loader: 'css-loader',
|
49 | options: { modules: arg.options.cssModules, camelCase: 'only', importLoaders: 1 },
|
50 | },
|
51 | {
|
52 | loader: 'postcss-loader',
|
53 | options: {
|
54 | ident: 'postcss',
|
55 | plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
|
56 | },
|
57 | },
|
58 | ],
|
59 | },
|
60 | {
|
61 | include: /node_modules/,
|
62 | use: [
|
63 | 'style-loader',
|
64 | {
|
65 | loader: 'css-loader',
|
66 | options: { importLoaders: 1 },
|
67 | },
|
68 | {
|
69 | loader: 'postcss-loader',
|
70 | options: {
|
71 | ident: 'postcss',
|
72 | plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
|
73 | },
|
74 | },
|
75 | ],
|
76 | },
|
77 | ],
|
78 | },
|
79 | {
|
80 | test: /\.less$/,
|
81 | oneOf: [
|
82 | {
|
83 | exclude: /node_modules/,
|
84 | use: [
|
85 | 'style-loader',
|
86 | {
|
87 | loader: 'css-loader',
|
88 | options: { modules: arg.options.cssModules, camelCase: 'only', importLoaders: 1 },
|
89 | },
|
90 | {
|
91 | loader: 'postcss-loader',
|
92 | options: {
|
93 | ident: 'postcss',
|
94 | plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
|
95 | },
|
96 | },
|
97 | 'less-loader',
|
98 | ],
|
99 | },
|
100 | {
|
101 | include: /node_modules/,
|
102 | use: [
|
103 | 'style-loader',
|
104 | {
|
105 | loader: 'css-loader',
|
106 | options: { importLoaders: 1 },
|
107 | },
|
108 | {
|
109 | loader: 'postcss-loader',
|
110 | options: {
|
111 | ident: 'postcss',
|
112 | plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
|
113 | },
|
114 | },
|
115 | 'less-loader',
|
116 | ],
|
117 | },
|
118 | ],
|
119 | },
|
120 | ],
|
121 | },
|
122 |
|
123 | plugins: [
|
124 | new webpack.DefinePlugin({
|
125 | __ENV__: JSON.stringify('dev'),
|
126 | }),
|
127 | ],
|
128 |
|
129 | performance: {
|
130 | hints: false,
|
131 | },
|
132 | });
|