Dva: рддреНрд░реБрдЯрд┐: "рдЖрдзрд╛рд░" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд▓рдЧрдЗрди 3 рдиреЗ "рдПрдлрд┐рдХреНрд╕" рдХреА рдПрдХ рдЕрдорд╛рдиреНрдп рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рджрд╛рди рдХреА

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЕрдХреНрддреВре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рдпрд╣ рдЕрдЬреАрдм рд╕рд╡рд╛рд▓ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд░рд╣рд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ dvajs рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдЪреАрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди (рд╕рдВрд╕реНрдХрд░рдг 2.0)
рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ, рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣реЛрдЧреАред

ERROR in ./src/index.js
Module build failed: Error: Plugin 3 specified in "base" provided an invalid property of "Affix"
    at Plugin.init (D:\Git\web\console\node_modules\babel-core\lib\transformation\plugin.js:131:13)
    at Function.normalisePlugin (D:\Git\web\console\node_modules\babel-core\lib\transformation\file\options\option-manager.js:148:12)
    at D:\Git\web\console\node_modules\babel-core\lib\transformation\file\options\option-manager.js:180:30
    at Array.map (native)
    at Function.normalisePlugins (D:\Git\web\console\node_modules\babel-core\lib\transformation\file\options\option-manager.js:154:20)
    at OptionManager.mergeOptions (D:\Git\web\console\node_modules\babel-core\lib\transformation\file\options\option-manager.js:228:36)
    at OptionManager.init (D:\Git\web\console\node_modules\babel-core\lib\transformation\file\options\option-manager.js:373:12)
    at File.initOptions (D:\Git\web\console\node_modules\babel-core\lib\transformation\file\index.js:221:65)
    at new File (D:\Git\web\console\node_modules\babel-core\lib\transformation\file\index.js:141:24)
    at Pipeline.transform (D:\Git\web\console\node_modules\babel-core\lib\transformation\pipeline.js:46:16)
 @ multi index

package.json рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрднрд░рддрд╛

{
  "private": true,
  "entry": {
    "index": "./src/index.js"
  },
  "dependencies": {
    "antd": "^2.0.0",
    "classnames": "^2.2.5",
    "dva": "^1.1.0",
    "qs": "^6.2.0",
    "react": "^15.1.0",
    "react-dnd": "^2.1.4",
    "react-dnd-html5-backend": "^2.1.2",
    "react-dom": "^15.1.0",
    "react-router": "^2.8.1",
    "react-sticky": "^5.0.5",
    "urijs": "^1.18.2"
  },
  "devDependencies": {
    "atool-build": "^0.7.6",
    "babel-eslint": "^6.0.4",
    "babel-plugin-import": "^1.0.0",
    "babel-plugin-dva-hmr": "^0.1.0",
    "babel-plugin-transform-runtime": "^6.9.0",
    "babel-runtime": "^6.9.2",
    "dora": "0.3.x",
    "dora-plugin-proxy": "^0.7.0",
    "dora-plugin-webpack": "0.6.x",
    "dora-plugin-webpack-hmr": "^0.1.0",
    "eslint": "^2.13.1",
    "eslint-config-airbnb": "^9.0.1",
    "eslint-plugin-import": "^1.8.1",
    "eslint-plugin-jsx-a11y": "^1.4.2",
    "eslint-plugin-react": "^5.1.1",
    "glob": "^7.0.5",
    "mockjs": "^1.0.1-beta2",
    "redbox-react": "^1.2.10"
  },
  "scripts": {
    "start": "dora --plugins \"proxy,webpack,webpack-hmr\"",
    "lint": "eslint --fix --ext .js,.jsx .",
    "build": "atool-build"
  }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

webpack.config.js рдореЗрдВ, рд▓рд╛рдЗрди antd рдмрджрд▓реЗрдВ:

webpackConfig.babel.plugins.push(['import', {
  libraryName: 'antd',
  style: 'css'  // if true, use less
}]);

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

node_modules рд╣рдЯрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ? рдирд╣реАрдВ, рдХреГрдкрдпрд╛ рджреЗрдЦрдиреЗ рдХреЗ webpack.config.js рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред

рдзрдиреНрдпрд╡рд╛рдж, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдиреМрд╕рд┐рдЦрд┐рдпрд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

node_modules рдХрдИ рдмрд╛рд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рджреАрд╡рд╛рд░ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рджреЛрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ)ред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдиреЛрдбрдЬ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╕реНрдпрд╛ рдереА (рдореИрдВрдиреЗ 4.6 рдФрд░ 6.9 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ)ред

рдЕрдм package.json рдореЗрдВ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, node_modules рд╣рдЯрд╛рдПрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ

{
  "private": true,
  "entry": {
    "index": "./src/index.js"
  },
  "dependencies": {
    "antd": "^2.1.0",
    "classnames": "^2.2.5",
    "dva": "^1.1.0",
    "qs": "^6.3.0",
    "react": "^15.3.2",
    "react-dnd": "^2.1.4",
    "react-dnd-html5-backend": "^2.1.2",
    "react-dom": "^15.3.2",
    "react-router": "^2.8.1"
  },
  "devDependencies": {
    "atool-build": "^0.9.0",
    "babel-eslint": "^7.0.0",
    "babel-plugin-import": "^1.0.1",
    "babel-plugin-dva-hmr": "^0.2.0",
    "babel-plugin-transform-runtime": "^6.15.0",
    "babel-runtime": "^6.11.6",
    "dora": "0.4.3",
    "dora-plugin-proxy": "^0.8.5",
    "dora-plugin-webpack": "^0.8.1",
    "dora-plugin-webpack-hmr": "^0.2.1",
    "eslint": "^3.8.1",
    "eslint-config-airbnb": "^12.0.0",
    "eslint-plugin-import": "^1.16.0",
    "eslint-plugin-jsx-a11y": "^2.2.3",
    "eslint-plugin-react": "^6.4.1 ",
    "redbox-react": "^1.3.2"
  },
  "scripts": {
    "start": "dora --plugins \"proxy,webpack,webpack-hmr\"",
    "lint": "eslint --fix --ext .js,.jsx .",
    "build": "atool-build"
  }
}

рдПрдирдкреАрдПрдо рд╕реНрдЯрд╛рд░реНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд
npm рд░рди рдмрд┐рд▓реНрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
рдКрдкрд░ рдмрддрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА

Module build failed: Error: Plugin 3 specified in "base" provided an invalid property of "Affix"

webpack.config рдлрд╝рд╛рдЗрд▓

const fs = require('fs');
const path = require('path');

module.exports = function (webpackConfig, env) {
  webpackConfig.babel.babelrc = false;
  webpackConfig.babel.plugins.push('transform-runtime');
  webpackConfig.babel.plugins.push(['antd', {
    style: 'css'  // if true, use less
  }]);

  // Enable hmr for development.
  if (env === 'development') {
    webpackConfig.babel.plugins.push(['dva-hmr', {
      entries: [
        './src/index.js',
      ]
    }]);
  }
  //webpackConfig.devtool = 'source-map';

  // Parse all less files as css module.
  webpackConfig.module.loaders.forEach(function (loader, index) {

    if (typeof loader.test === 'function' && loader.test.toString().indexOf('\\.less$') > -1) {
      loader.test = /\.dont\.exist\.file/;
    }
    if (loader.test.toString() === '/\\.module\\.less$/') {
      loader.test = /\.less$/;
    }
  });

  return webpackConfig;
};

webpack.config.js рдореЗрдВ, рд▓рд╛рдЗрди antd рдмрджрд▓реЗрдВ:

webpackConfig.babel.plugins.push(['import', {
  libraryName: 'antd',
  style: 'css'  // if true, use less
}]);

рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

wm3445 picture wm3445  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yaeSakuras picture yaeSakuras  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bjwulin picture bjwulin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

huyawei picture huyawei  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mclouvem picture mclouvem  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ