React各种资源下载(基于Webpack4和最新的React脚手架)

本文介绍了在基于Webpack4和最新React脚手架的环境中,如何快速搭建项目所需资源。包括Sass的安装与配置、React-router、React-redux、AntDesign、axios、React-transition-group、Redux-thunk、styled-components以及immutable.js的下载与集成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先说下最懒最快的方法,就是拷贝别人成熟的package.json文件中的dependencies、devDependencies和babel中的配置,然后yarn install就行了;

{
    "name": "my-app2",
    "version": "0.1.0",
    "private": true,
    "homepage": "/",
    "dependencies": {
        "@babel/core": "7.8.4",
        "@svgr/webpack": "4.3.3",
        "@testing-library/jest-dom": "^4.2.4",
        "@testing-library/react": "^9.5.0",
        "@testing-library/user-event": "^7.2.1",
        "@typescript-eslint/eslint-plugin": "^2.10.0",
        "@typescript-eslint/parser": "^2.10.0",
        "antd": "^4.2.4",
        "antd-mobile": "^2.3.1",
        "axios": "^0.19.2",
        "babel-eslint": "10.0.3",
        "babel-jest": "^24.9.0",
        "babel-loader": "8.0.6",
        "babel-plugin-import": "^1.13.0",
        "babel-plugin-named-asset-import": "^0.3.6",
        "babel-preset-react-app": "^9.1.1",
        "camelcase": "^5.3.1",
        "case-sensitive-paths-webpack-plugin": "2.3.0",
        "css-loader": "3.4.2",
        "dayjs": "^1.10.4",
        "dotenv": "8.2.0",
        "dotenv-expand": "5.1.0",
        "eslint": "^6.6.0",
        "eslint-config-react-app": "^5.2.0",
        "eslint-loader": "3.0.3",
        "eslint-plugin-flowtype": "4.6.0",
        "eslint-plugin-import": "2.20.0",
        "eslint-plugin-jsx-a11y": "6.2.3",
        "eslint-plugin-react": "7.18.0",
        "eslint-plugin-react-hooks": "^1.6.1",
        "file-loader": "4.3.0",
        "fs-extra": "^8.1.0",
        "html-webpack-plugin": "4.0.0-beta.11",
        "http-proxy-middleware": "^1.0.3",
        "identity-obj-proxy": "3.0.0",
        "immutability-helper": "^3.1.1",
        "immutable": "^4.0.0-rc.12",
        "jest": "24.9.0",
        "jest-environment-jsdom-fourteen": "1.0.1",
        "jest-resolve": "24.9.0",
        "jest-watch-typeahead": "0.4.2",
        "jquery": "^3.5.1",
        "js-base64": "^3.6.0",
        "lodash": "^4.17.20",
        "mathjs": "^7.2.0",
        "md5": "^2.2.1",
        "mini-css-extract-plugin": "0.9.0",
        "node-sass": "^4.14.1",
        "optimize-css-assets-webpack-plugin": "5.0.3",
        "pnp-webpack-plugin": "1.6.0",
        "postcss-flexbugs-fixes": "4.1.0",
        "postcss-loader": "3.0.0",
        "postcss-normalize": "8.0.1",
        "postcss-preset-env": "6.7.0",
        "postcss-safe-parser": "4.0.1",
        "pubsub-js": "^1.8.0",
        "qs": "^6.9.6",
        "react": "^16.13.0",
        "react-app-polyfill": "^1.0.6",
        "react-dev-utils": "^10.2.0",
        "react-dnd": "^11.1.3",
        "react-dnd-html5-backend": "^11.1.3",
        "react-dom": "^16.13.0",
        "react-draggable": "^4.4.3",
        "react-loadable": "^5.5.0",
        "react-redux": "^7.2.0",
        "react-resizable": "^1.11.0",
        "react-router-dom": "^5.1.2",
        "react-transition-group": "^4.3.0",
        "redux": "^4.0.5",
        "redux-ignore": "^1.2.5",
        "redux-immutable": "^4.0.0",
        "redux-persist": "^6.0.0",
        "redux-thunk": "^2.3.0",
        "resolve": "1.15.0",
        "resolve-url-loader": "3.1.1",
        "sass-loader": "8.0.2",
        "semver": "6.3.0",
        "style-loader": "0.23.1",
        "styled-components": "^5.1.0",
        "terser-webpack-plugin": "2.3.4",
        "ts-pnp": "1.1.5",
        "url-loader": "2.3.0",
        "webpack": "4.41.5",
        "webpack-dev-server": "^3.11.0",
        "webpack-manifest-plugin": "2.2.0",
        "workbox-webpack-plugin": "4.3.1"
    },
    "scripts": {
        "start": "node scripts/start.js",
        "build": "cross-env REACT_APP_ENV=zt-product node scripts/build.js",
        "test": "node scripts/test.js",
        "build:test": "cross-env REACT_APP_ENV=zt-test node scripts/build.js",
        "build:show": "cross-env REACT_APP_ENV=zt-show node scripts/build.js"
    },
    "eslintConfig": {
        "extends": "react-app"
    },
    "browserslist": {
        "production": [
            ">0.2%",
            "not dead",
            "not op_mini all",
            "ie 11"
        ],
        "development": [
            "last 1 chrome version",
            "last 1 firefox version",
            "last 1 safari version"
        ]
    },
    "jest": {
        "roots": [
            "<rootDir>/src"
        ],
        "collectCoverageFrom": [
            "src/**/*.{js,jsx,ts,tsx}",
            "!src/**/*.d.ts"
        ],
        "setupFiles": [
            "react-app-polyfill/jsdom"
        ],
        "setupFilesAfterEnv": [
            "<rootDir>/src/setupTests.js"
        ],
        "testMatch": [
            "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
            "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
        ],
        "testEnvironment": "jest-environment-jsdom-fourteen",
        "transform": {
            "^.+\\.(js|jsx|ts|tsx)$": "<rootDir>/node_modules/babel-jest",
            "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
            "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
        },
        "transformIgnorePatterns": [
            "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$",
            "^.+\\.module\\.(css|sass|scss)$"
        ],
        "modulePaths": [],
        "moduleNameMapper": {
            "^react-native$": "react-native-web",
            "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
        },
        "moduleFileExtensions": [
            "web.js",
            "js",
            "web.ts",
            "ts",
            "web.tsx",
            "tsx",
            "json",
            "web.jsx",
            "jsx",
            "node"
        ],
        "watchPlugins": [
            "jest-watch-typeahead/filename",
            "jest-watch-typeahead/testname"
        ]
    },
    "babel": {
        "presets": [
            "react-app"
        ],
        "plugins": [
            [
                "import",
                {
                    "libraryName": "antd",
                    "libraryDirectory": "es",
                    "style": "css"
                }
            ]
        ]
    },
    "devDependencies": {
        "@babel/preset-env": "^7.11.5",
        "antd-dayjs-webpack-plugin": "^1.0.6",
        "cross-env": "^7.0.2"
    }
}

 下面为新下载的脚手架环境下,必须下载的资源 

1.Sass下载(Sass是css的扩展语言)

sass基础用法请查看博客:http://www.ruanyifeng.com/blog/2012/06/sass.html

最新版的React脚手架包含了sass配置和sass-loader,所以只需下载node-sass:

npm install node-sass --save-dev 

 

如果node-sass安装报错,用下述方法:

先 npm install -g cnpm --registry=https://registry.npm.taobao.org下载cnpm

然后用cnpm去安装 cnpm install node-sass --save

 

2.React-router下载

npm install react-router-dom --save

 

3.React-redux下载

yarn add redux

yarn add react-redux

 

4.AntDesign下载

yarn add antd

npm install babel-plugin-import --save-dev

找到package.json,在“babel”中配置AntDesign的CSS预加载

"plugins": [
      [
        "import",
        {
          "libraryName": "antd",
          "libraryDirectory": "es",
          "style": "css"
        }
      ]
    ]

如下图

 

5.axios下载

yarn add axios

 

6.React-transition-group下载

yarn add react-transition-group 

 

7.Redux-thunk下载

yarn add redux-thunk

 

8.styled-components(样式不会全局,可在对应组件生效)

yarn add styled-components

 

9.immutable.js(保护原始state不被篡改)

yarn add immutable

yarn add redux-immutable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值