webpack

theme

配置主题,实际上是配 less 变量。支持对象和字符串两种类型,字符串需要指向一个返回配置的文件。比如:

  1. "theme": {
  2. "@primary-color": "#1DA57A"
  3. }

或者,

  1. "theme": "./theme-config.js"

define

通过 webpack 的 DefinePlugin 传递给代码,值会自动做 JSON.stringify 处理。比如:

  1. "define": {
  2. "process.env.TEST": 1,
  3. "USE_COMMA": 2,
  4. }

externals

配置 webpack 的?externals?属性。比如:

  1. // 配置 react 和 react-dom 不打入代码
  2. "externals": {
  3. "react": "window.React",
  4. "react-dom": "window.ReactDOM"
  5. }

alias

配置 webpack 的 resolve.alias 属性。

browserslist

配置 browserslist,同时作用于 babel-preset-env 和 autoprefixer。比如:

  1. "browserslist": [
  2. "> 1%",
  3. "last 2 versions"
  4. ]

publicPath

配置 webpack 的 output.publicPath 属性。

devtool

配置 webpack 的 devtool 属性。

disableCSSModules

禁用 CSS Modules

disableCSSSourceMap

禁用 CSS 的 SourceMap 生成。

extraBabelPresets

定义额外的 babel preset 列表,格式为数组。

extraBabelPlugins

定义额外的 babel plugin 列表,格式为数组。

extraBabelIncludes

定义额外需要做 babel 转换的文件匹配列表,格式为数组。

cssModulesExcludes

指定项目目录下的文件不走 css modules,格式为数组,项必须是 css 或 less 文件。

copy

定义需要单纯做复制的文件列表,格式为数组,项的格式参考 copy-webpack-plugin 的配置。

比如:

  1. "copy": [
  2. {
  3. "from": "",
  4. "to": ""
  5. }
  6. ]

proxy

配置 webpack-dev-server 的 proxy 属性。如果要代理请求到其他服务器,可以这样配:

  1. "proxy": {
  2. "/api": {
  3. "target": "http://jsonplaceholder.typicode.com/",
  4. "changeOrigin": true,
  5. "pathRewrite": { "^/api" : "" }
  6. }
  7. }

然后访问?/api/users?就能访问到?http://jsonplaceholder.typicode.com/users?的数据。

sass

配置 node-sass 的选项。注意:使用 sass 时需在项目目录安装 node-sass 和 sass-loader 依赖。

manifest

配置后会生成 manifest.json,option 传给 https://www.npmjs.com/package/webpack-manifest-plugin。比如:

  1. "manifest": {
  2. "basePath": "/app/"
  3. }

ignoreMomentLocale

忽略 moment 的 locale 文件,用于减少尺寸。

disableDynamicImport

禁用 import() 按需加载,全部打包在一个文件里,通过 babel-plugin-dynamic-import-node-sync 实现。

es5ImcompatibleVersions

让 babel 自动编译使用了 es6 语法的 npm 模块,为什么会有这个配置?

lessLoaderOptions

less-loader 的额外配置项。

cssLoaderOptions

css-loader 的额外配置项。

env

针对特定的环境进行配置。dev 的环境变量是?development,build 的环境变量是?production。比如:

  1. "extraBabelPlugins": ["transform-runtime"],
  2. "env": {
  3. "development": {
  4. "extraBabelPlugins": ["dva-hmr"]
  5. }
  6. }

这样,开发环境下的 extraBabelPlugins 是 ["transform-runtime", "dva-hmr"],而生产环境下是 ["transform-runtime"]

原文: https://v1.umijs.org/config/