UNPKG

4.09 kBJavaScriptView Raw
1const path = require('path');
2const autoprefixer = require('autoprefixer');
3const webpack = require('webpack');
4const merge = require('webpack-merge');
5
6const base = require('./base');
7
8module.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.noBabelConfig
19 ? {}
20 : {
21 presets: [
22 [
23 '@babel/preset-env',
24 {
25 targets: arg.options.browsers,
26 modules: false,
27 loose: true,
28 useBuiltIns: 'entry',
29 configPath: arg.context,
30 shippedProposals: true,
31 },
32 ],
33 '@babel/preset-react',
34 ],
35 plugins: [
36 ['@babel/plugin-proposal-class-properties', { loose: true }],
37 ['@babel/plugin-proposal-decorators', { legacy: true }],
38 '@babel/plugin-proposal-export-default-from',
39 '@babel/plugin-proposal-export-namespace-from',
40 '@babel/plugin-proposal-optional-chaining',
41 '@babel/plugin-proposal-numeric-separator',
42 '@babel/plugin-proposal-throw-expressions',
43 ],
44 },
45 },
46 {
47 test: /\.css$/,
48 oneOf: [
49 {
50 exclude: /node_modules/,
51 use: [
52 'style-loader',
53 {
54 loader: 'css-loader',
55 options: { modules: arg.options.cssModules, camelCase: 'only', importLoaders: 1 },
56 },
57 {
58 loader: 'postcss-loader',
59 options: {
60 ident: 'postcss',
61 plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
62 },
63 },
64 ],
65 },
66 {
67 include: /node_modules/,
68 use: [
69 'style-loader',
70 {
71 loader: 'css-loader',
72 options: { importLoaders: 1 },
73 },
74 {
75 loader: 'postcss-loader',
76 options: {
77 ident: 'postcss',
78 plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
79 },
80 },
81 ],
82 },
83 ],
84 },
85 {
86 test: /\.less$/,
87 oneOf: [
88 {
89 exclude: /node_modules/,
90 use: [
91 'style-loader',
92 {
93 loader: 'css-loader',
94 options: { modules: arg.options.cssModules, camelCase: 'only', importLoaders: 1 },
95 },
96 {
97 loader: 'postcss-loader',
98 options: {
99 ident: 'postcss',
100 plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
101 },
102 },
103 'less-loader',
104 ],
105 },
106 {
107 include: /node_modules/,
108 use: [
109 'style-loader',
110 {
111 loader: 'css-loader',
112 options: { importLoaders: 1 },
113 },
114 {
115 loader: 'postcss-loader',
116 options: {
117 ident: 'postcss',
118 plugins: () => [autoprefixer({ browsers: arg.options.browsers })],
119 },
120 },
121 'less-loader',
122 ],
123 },
124 ],
125 },
126 ],
127 },
128
129 plugins: [
130 new webpack.DefinePlugin({
131 __ENV__: JSON.stringify('dev'),
132 }),
133 ],
134
135 performance: {
136 hints: false,
137 },
138 });