1 | var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
2 |
|
3 | module.exports = {
|
4 | getJSLoader: function(cx, devMode) {
|
5 | return {
|
6 | test: /\.jsx?$/,
|
7 | include: [cx.__sourcedir],
|
8 | use: [{
|
9 | loader: 'babel-loader',
|
10 | query: {
|
11 | cacheDirectory: true,
|
12 | presets: [
|
13 | require.resolve('babel-preset-env'),
|
14 | require.resolve('babel-preset-react'),
|
15 | require.resolve('babel-preset-stage-0')
|
16 | ],
|
17 | plugins: [
|
18 | [
|
19 | require.resolve('babel-plugin-import'),
|
20 | { "libraryName": "antd", "style": true }
|
21 | ],
|
22 | require.resolve("babel-plugin-transform-runtime"),
|
23 | require.resolve('react-hot-loader/babel')
|
24 | ]
|
25 | }
|
26 | }, 'webpack-module-hot-accept']
|
27 | }
|
28 | },
|
29 |
|
30 | getCSSLoader: function(cx, devMode) {
|
31 | let use = [{
|
32 | loader: 'css-loader',
|
33 | options: Object.assign({
|
34 | sourceMap: devMode,
|
35 | minimize: !devMode,
|
36 | modules: false,
|
37 | url: false
|
38 | })
|
39 | }];
|
40 | if (devMode) {
|
41 | use.unshift('style-loader');
|
42 | } else {
|
43 | use = ExtractTextPlugin.extract({
|
44 | fallback: 'style-loader',
|
45 | use
|
46 | })
|
47 | }
|
48 | return { test: /\.css$/, use }
|
49 | },
|
50 |
|
51 | getLESS_SRCLoader: function(cx, devMode) {
|
52 | let use = [{
|
53 | loader: 'css-loader',
|
54 | options: Object.assign({
|
55 | sourceMap: devMode,
|
56 | minimize: !devMode,
|
57 | localIdentName: '[local]_[hash:base64:5]',
|
58 | modules: false,
|
59 | }, cx.umdConf.webpackFeatures.enableCSSModule)
|
60 | }, {
|
61 | loader: 'postcss-loader',
|
62 | options: {
|
63 | plugins: (loader) => [
|
64 | require('postcss-flexbugs-fixes')(),
|
65 | require('autoprefixer')({
|
66 | browsers: [
|
67 | '>1%',
|
68 | 'last 4 versions',
|
69 | 'Firefox ESR',
|
70 | 'not ie < 9',
|
71 | ],
|
72 | flexbox: 'no-2009',
|
73 | }),
|
74 | ],
|
75 | }
|
76 | }, {
|
77 | loader: 'less-loader',
|
78 | options: {
|
79 | modifyVars: {
|
80 | '@icon-url': '"../../../../antd-iconfont/iconfont"',
|
81 | },
|
82 | },
|
83 | }]
|
84 | if (devMode) {
|
85 | use.unshift('style-loader');
|
86 | } else {
|
87 | use = ExtractTextPlugin.extract({
|
88 | fallback: 'style-loader',
|
89 | use
|
90 | })
|
91 | }
|
92 | return { test: /\.less$/, use }
|
93 | },
|
94 |
|
95 |
|
96 | getImgLoader: function(cx, devMode) {
|
97 | return {
|
98 | test: /\.(jpe?g|png|svg|gif)$/i,
|
99 | use: `url-loader?prefix=img&limit=25000&name=[name]${devMode?'':'_[hash:7]'}.[ext]`,
|
100 | }
|
101 | },
|
102 |
|
103 | getFontLoader: function(cx, devMode) {
|
104 | return {
|
105 | test: /.otf$|\.ttf$|\.eot$|\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
|
106 | loader: 'file-loader',
|
107 | options: {
|
108 | name: `[name]${devMode?'':'_[hash:7]'}.[ext]`
|
109 | },
|
110 | }
|
111 | }
|
112 | } |
\ | No newline at end of file |