creat-react-apのwebpack構成を拡張します.
10357 ワード
reactプロジェクトを作る時、私達は主にcreat-react-ap足場でプロジェクトを作ります.creat-react-apはwebpackの構成をカプセル化してデフォルトで設定ファイルを隠しました.webpackの構成を拡張する必要がある場合は、
この方式の欠点: 拡張された構成とcreat-react-ap内に構築されたwebpack構成が混在していて、構成に問題が発生した後の検査に不利です. react-ap-rewiredを使って再構成します.
react-ap-rewiredは、creat-react-apをカスタマイズしたコミュニティソリューションです.これは直接にcreate-react-apのデフォルトの構成を修正するのではなく、creat-react-apの構成をもとに拡張します.
使用手順
1.react-ap-rewiredをインストールする
上の3ステップでwebpackの配置を拡張できます.次に必要に応じて配置すればいいです.私が使ったよくある構成を紹介します.
ES 7の修正器文法を有効にします.
cssモジュール化(参照リンク参照)エイリアスの設定ANtdは必要に応じてをロードする.
lessモジュール化および上書き変数
今日creat-react-app文書を見たら、足場はcssモジュール化をサポートしています.追加の配置は必要ないです.cssモジュール化の使用方法は全部同じです[email protected]また、より高いバージョンでは、cssのみをサポートしています.less、stylasのモジュール化に似ていますか?それとも配置が必要ですか?)
209.1.21更新今日再構成する時、エラーが発生しました.原因は新しい
参照リンク:@babel/plugin-proposal-decorators、修飾器 cssモジュール化のインストールと使用 別名を設定し、別名を設定した後、エディタがパスを提示しないソリューション ANtdは必要に応じて をロードします.
npm run eject
を実行して、設定ファイルを暴露してから、プロファイルを拡張する必要があります.この方式の欠点:
npm run eject
は、不可逆と命名されています.一旦構成ファイルが露出されたら、もう隠してはいけません.react-ap-rewiredは、creat-react-apをカスタマイズしたコミュニティソリューションです.これは直接にcreate-react-apのデフォルトの構成を修正するのではなく、creat-react-apの構成をもとに拡張します.
使用手順
1.react-ap-rewiredをインストールする
npm install [email protected] --save-dev
2.プロジェクトルートディレクトリにconfig-overrides.js
ファイルを作成して、デフォルトの設定を変更します./* config-overrides.js */
module.exports = function override(config, env) {
//do stuff with the webpack config...
return config;
}
3.package.json内の起動配置を修正する/* package.json */
"scripts": {
- "start": "react-scripts start",
+ "start": "react-app-rewired start",
- "build": "react-scripts build",
+ "build": "react-app-rewired build",
- "test": "react-scripts test",
+ "test": "react-app-rewired test",
}
プロファイルconfig-overrides.jsを設定します.上の3ステップでwebpackの配置を拡張できます.次に必要に応じて配置すればいいです.私が使ったよくある構成を紹介します.
ES 7の修正器文法を有効にします.
cssモジュール化(参照リンク参照)エイリアスの設定ANtdは必要に応じてをロードする.
lessモジュール化および上書き変数
yarn add @babel/plugin-proposal-decorators //
yarn add codebandits/react-app-rewire-css-modules sass-loader node-sass //css、sass
yarn add babel-plugin-import //antd
yarn add react-app-rewire-less-modules //less
const { injectBabelPlugin } = require('react-app-rewired');
const rewireCssModules = require('react-app-rewire-css-modules');
const rewireLess = require('react-app-rewire-less-modules')
const path = require('path')
function resolve (dir) {
return path.join(__dirname, '.', dir)
}
module.exports = function override(config, env) {
// do stuff with the webpack config...
// ES7 (babel 7)
config = injectBabelPlugin(['@babel/plugin-proposal-decorators', { "legacy": true }], config) //{ "legacy": true } ,
//css
config = rewireCssModules(config, env);
//
config.resolve.alias = {
'@': resolve('src')
}
//antd
config = injectBabelPlugin(['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }], config,);
//less
config = rewireLess.withLoaderOptions({
javascriptEnabled: true,
modifyVars: {'@primary-color': '#1DA57A'},
})(config, env)
return config;
};
2018.12.24更新今日creat-react-app文書を見たら、足場はcssモジュール化をサポートしています.追加の配置は必要ないです.cssモジュール化の使用方法は全部同じです[email protected]また、より高いバージョンでは、cssのみをサポートしています.less、stylasのモジュール化に似ていますか?それとも配置が必要ですか?)
209.1.21更新今日再構成する時、エラーが発生しました.原因は新しい
[email protected]
バージョンの関係です.react-app-rewiredは、すべての方法のinject BabelPluginを削除し、これらの方法は、customize-cra
という新しいパケットに移動する.解決策はreact-ap-rewiredを降格またはドキュメントごとに再構成することです.ここを参考にしてもいいです.参照リンク: