博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react CRA antd 按需加载配置 lessloader
阅读量:7282 次
发布时间:2019-06-30

本文共 10626 字,大约阅读时间需要 35 分钟。

webpack配置 webpack.config.dev.js, webpack.config.prod同理。

'use strict';const autoprefixer = require('autoprefixer');const path = require('path');const webpack = require('webpack');const HtmlWebpackPlugin = require('html-webpack-plugin');const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin');const WatchMissingNodeModulesPlugin = require('react-dev-utils/WatchMissingNodeModulesPlugin');const eslintFormatter = require('react-dev-utils/eslintFormatter');const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');const getClientEnvironment = require('./env');const paths = require('./paths');// Webpack uses `publicPath` to determine where the app is being served from.// In development, we always serve from the root. This makes config easier.const publicPath = '/';// `publicUrl` is just like `publicPath`, but we will provide it to our app// as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.// Omit trailing slash as %PUBLIC_PATH%/xyz looks better than %PUBLIC_PATH%xyz.const publicUrl = '';// Get environment variables to inject into our app.const env = getClientEnvironment(publicUrl);// This is the development configuration.// It is focused on developer experience and fast rebuilds.// The production configuration is different and lives in a separate file.module.exports = {  // You may want 'eval' instead if you prefer to see the compiled output in DevTools.  // See the discussion in https://github.com/facebookincubator/create-react-app/issues/343.  devtool: 'cheap-module-source-map',  // These are the "entry points" to our application.  // This means they will be the "root" imports that are included in JS bundle.  // The first two entry points enable "hot" CSS and auto-refreshes for JS.  entry: [    // We ship a few polyfills by default:    require.resolve('./polyfills'),    // Include an alternative client for WebpackDevServer. A client's job is to    // connect to WebpackDevServer by a socket and get notified about changes.    // When you save a file, the client will either apply hot updates (in case    // of CSS changes), or refresh the page (in case of JS changes). When you    // make a syntax error, this client will display a syntax error overlay.    // Note: instead of the default WebpackDevServer client, we use a custom one    // to bring better experience for Create React App users. You can replace    // the line below with these two lines if you prefer the stock client:    // require.resolve('webpack-dev-server/client') + '?/',    // require.resolve('webpack/hot/dev-server'),    require.resolve('react-dev-utils/webpackHotDevClient'),    // Finally, this is your app's code:    paths.appIndexJs,    // We include the app code last so that if there is a runtime error during    // initialization, it doesn't blow up the WebpackDevServer client, and    // changing JS code would still trigger a refresh.  ],  output: {    // Add /* filename */ comments to generated require()s in the output.    pathinfo: true,    // This does not produce a real file. It's just the virtual path that is    // served by WebpackDevServer in development. This is the JS bundle    // containing code from all our entry points, and the Webpack runtime.    filename: 'static/js/bundle.js',    // There are also additional JS chunk files if you use code splitting.    chunkFilename: 'static/js/[name].chunk.js',    // This is the URL that app is served from. We use "/" in development.    publicPath: publicPath,    // Point sourcemap entries to original disk location (format as URL on Windows)    devtoolModuleFilenameTemplate: info =>      path.resolve(info.absoluteResourcePath).replace(/\\/g, '/'),  },  resolve: {    // This allows you to set a fallback for where Webpack should look for modules.    // We placed these paths second because we want `node_modules` to "win"    // if there are any conflicts. This matches Node resolution mechanism.    // https://github.com/facebookincubator/create-react-app/issues/253    modules: ['node_modules', paths.appNodeModules].concat(      // It is guaranteed to exist because we tweak it in `env.js`      process.env.NODE_PATH.split(path.delimiter).filter(Boolean)    ),    // These are the reasonable defaults supported by the Node ecosystem.    // We also include JSX as a common component filename extension to support    // some tools, although we do not recommend using it, see:    // https://github.com/facebookincubator/create-react-app/issues/290    // `web` extension prefixes have been added for better support    // for React Native Web.    extensions: ['.web.js', '.mjs', '.js', '.json', '.web.jsx', '.jsx'],    alias: {      // Support React Native Web      // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/      'react-native': 'react-native-web',    },    plugins: [      // Prevents users from importing files from outside of src/ (or node_modules/).      // This often causes confusion because we only process files within src/ with babel.      // To fix this, we prevent you from importing files out of src/ -- if you'd like to,      // please link the files into your node_modules/ and let module-resolution kick in.      // Make sure your source files are compiled, as they will not be processed in any way.      new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]),    ],  },  module: {    strictExportPresence: true,    rules: [      // TODO: Disable require.ensure as it's not a standard language feature.      // We are waiting for https://github.com/facebookincubator/create-react-app/issues/2176.      // { parser: { requireEnsure: false } },      // First, run the linter.      // It's important to do this before Babel processes the JS.      {        test: /\.(js|jsx|mjs)$/,        enforce: 'pre',        use: [          {            options: {              formatter: eslintFormatter,              eslintPath: require.resolve('eslint'),            },            loader: require.resolve('eslint-loader'),          },        ],        include: paths.appSrc,      },      {        // "oneOf" will traverse all following loaders until one will        // match the requirements. When no loader matches it will fall        // back to the "file" loader at the end of the loader list.        oneOf: [          // "url" loader works like "file" loader except that it embeds assets          // smaller than specified limit in bytes as data URLs to avoid requests.          // A missing `test` is equivalent to a match.          {            test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],            loader: require.resolve('url-loader'),            options: {              limit: 10000,              name: 'static/media/[name].[hash:8].[ext]',            },          },          // Process JS with Babel.          {            test: /\.(js|jsx|mjs)$/,            include: paths.appSrc,            loader: require.resolve('babel-loader'),            options: {              // This is a feature of `babel-loader` for webpack (not Babel itself).              // It enables caching results in ./node_modules/.cache/babel-loader/              // directory for faster rebuilds.              cacheDirectory: true,              plugins: [                // 引入样式为 css less为true,css为css                ['import', { libraryName: 'antd', style: true }],              ]            },          },          // "postcss" loader applies autoprefixer to our CSS.          // "css" loader resolves paths in CSS and adds assets as dependencies.          // "style" loader turns CSS into JS modules that inject 

 

package.json antd配置

{  "name": "react-cra-project",  "version": "0.1.0",  "private": true,  "homepage": "/",  "dependencies": {    "antd": "^3.9.2",    "autoprefixer": "7.1.6",    "axios": "^0.17.1",    "babel-core": "6.26.0",    "babel-eslint": "7.2.3",    "babel-jest": "20.0.3",    "babel-loader": "7.1.2",    "babel-preset-react-app": "^3.1.0",    "babel-runtime": "6.26.0",    "case-sensitive-paths-webpack-plugin": "2.1.1",    "chalk": "1.1.3",    "css-loader": "0.28.7",    "dotenv": "4.0.0",    "eslint": "4.10.0",    "eslint-config-react-app": "^2.0.1",    "eslint-loader": "1.9.0",    "eslint-plugin-flowtype": "2.39.1",    "eslint-plugin-import": "2.8.0",    "eslint-plugin-jsx-a11y": "5.1.1",    "eslint-plugin-react": "7.4.0",    "extract-text-webpack-plugin": "3.0.2",    "file-loader": "1.1.5",    "fs-extra": "3.0.1",    "html-webpack-plugin": "2.29.0",    "jest": "20.0.4",    "object-assign": "4.1.1",    "postcss-flexbugs-fixes": "3.2.0",    "postcss-loader": "2.0.8",    "promise": "8.0.1",    "raf": "3.4.0",    "react": "^16.2.0",    "react-dev-utils": "^4.2.1",    "react-dom": "^16.2.0",    "react-loadable": "^5.5.0",    "react-redux": "^5.0.6",    "react-router-dom": "^4.2.2",    "redux": "^3.7.2",    "style-loader": "0.19.0",    "sw-precache-webpack-plugin": "0.11.4",    "url-loader": "0.6.2",    "webpack": "3.8.1",    "webpack-dev-server": "2.9.4",    "webpack-manifest-plugin": "1.3.2",    "whatwg-fetch": "2.0.3"  },  "scripts": {    "start": "node scripts/start.js",    "build": "REACT_APP_SECRET_API=production node scripts/build.js",    "staging": "REACT_APP_SECRET_API=staging node scripts/build.js",    "test": "react-app-rewired test --env=jsdom"  },  "jest": {    "collectCoverageFrom": [      "src/**/*.{js,jsx,mjs}"    ],    "setupFiles": [      "
/config/polyfills.js" ], "testMatch": [ "
/src/**/__tests__/**/*.{js,jsx,mjs}", "
/src/**/?(*.)(spec|test).{js,jsx,mjs}" ], "testEnvironment": "node", "testURL": "http://localhost", "transform": { "^.+\\.(js|jsx|mjs)$": "
/node_modules/babel-jest", "^.+\\.css$": "
/config/jest/cssTransform.js", "^(?!.*\\.(js|jsx|mjs|css|json)$)": "
/config/jest/fileTransform.js" }, "transformIgnorePatterns": [ "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$" ], "moduleNameMapper": { "^react-native$": "react-native-web" }, "moduleFileExtensions": [ "web.js", "mjs", "js", "json", "web.jsx", "jsx", "node" ] }, "babel": { "presets": [ "react-app" ], "plugins": [ [ "import", { "libraryName": "antd", "style": true } ] ] }, "eslintConfig": { "extends": "react-app" }, "devDependencies": { "babel-plugin-import": "^1.8.0", "less": "2.7.2", "less-loader": "4.0.5", "react-app-rewire-less": "^2.1.2", "react-app-rewired": "^1.5.2", "react-scripts": "^1.1.4" }}

 

转载于:https://www.cnblogs.com/thinkingthigh/p/9835160.html

你可能感兴趣的文章
Spinner使用二
查看>>
android 隐藏输入法键盘
查看>>
Android jni 中打印logcat日志
查看>>
SSL和keystore生成、导入等配置
查看>>
The Eagles Hotel California Lyrics
查看>>
软件工程——课程评价
查看>>
OpenStack Placement Project
查看>>
微信支付问题
查看>>
购买类目的概率预测
查看>>
Ajax Step By Step2
查看>>
codeforces 701 B. Cells Not Under Attack
查看>>
当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
查看>>
Creating a Custom Page Layout in SharePoint 2013
查看>>
mysql foreignkey
查看>>
Django 中的自定义分页标签
查看>>
[转]ASP.NET自定义控件复杂属性声明持久性浅析
查看>>
PAT (Basic Level) Practise (中文)-卡拉兹(Callatz)猜想
查看>>
第八周进度总结
查看>>
axios 注意点
查看>>
刷新ListView刷新时的闪烁问题
查看>>