ホームページ ウェブフロントエンド jsチュートリアル 複数のページをサポートするように create-react-app を変更する方法

複数のページをサポートするように create-react-app を変更する方法

May 28, 2018 pm 03:54 PM
改訂

今回は、マルチページをサポートするために create-react-app を変更する方法と、マルチページをサポートするために create-react-app を変更する際の 注意点 について説明します。これは実際的なケースです。見て。

開発プロセスを変更します

create-react-app yarn run ejectによって生成されたプロジェクトに基づいています

yarn run eject

yarn add globby 用于查看html文件

修改config/paths.js

//遍历public下目录下的html文件生成arry
const globby = require('globby');
const htmlArray = globby.sync([path.join(resolveApp('public'), '/*.html')]);
//module.exports 里面增加
htmlArray
ログイン後にコピー

修改config/webpack.config.dev.js

<!--增加配置-->
// 遍历html
const entryObj = {};
const htmlPluginsAray = paths.htmlArray.map((v)=> {
 const fileParse = path.parse(v);
 
 entryObj[fileParse.name] = [
  require.resolve('./polyfills'),
  require.resolve('react-dev-utils/webpackHotDevClient'),
  `${paths.appSrc}/${fileParse.name}.js`,,
 ]
 return new HtmlWebpackPlugin({
  inject: true,
  chunks:[fileParse.name],
  template: `${paths.appPublic}/${fileParse.base}`,
  filename: fileParse.base
 })
});
<!--entry 替换为entryObj-->
entry:entryObj
<!--替换htmlplugin内容-->
// new HtmlWebpackPlugin({
//  inject: true,
//  chunks: ["index"],
//  template: paths.appPublic + '/index.html',
// }),
...htmlPluginsAray,
ログイン後にコピー

修改config/webpackDevServer.config.js

// 增加
const path = require('path');
const htmlPluginsAray = paths.htmlArray.map((v)=> {
 const fileParse = path.parse(v);
 return {
  from: new RegExp(`^\/${fileParse.base}`), to: `/build/${fileParse.base}`
 };
});
<!--historyApiFallback 增加 rewrites-->
rewrites: htmlPluginsAray
ログイン後にコピー

以上就是dev模式下的修改了,yarn start一下试试。

修改product流程

修改config/

//增加
// 遍历html
const entryObj = {};
const htmlPluginsAray = paths.htmlArray.map((v)=> {
 const fileParse = path.parse(v);
 
 entryObj[fileParse.name] = [
  require.resolve('./polyfills'),
  `${paths.appSrc}/${fileParse.name}.js`,
 ];
 console.log(v);
 return new HtmlWebpackPlugin({
  inject: true,
  chunks:[fileParse.name],
  template: `${paths.appPublic}/${fileParse.base}`,
  filename: fileParse.base
 })
});
<!--修改entry-->
 entry: entryObj,
<!--替换 new HtmlWebpackPlugin 这个值-->
...htmlPluginsAray,
ログイン後にコピー

增加复制模块(yarn add cpy

修改scripts/build.js

 // function copyPublicFolder () 替换
// 原来的方法是复制public下所有的内容,因为增加了多html 所以不再直接复制过去(直接复制会覆盖html)
const copyPublicFolder = async() => {
 await cpy([`${paths.appPublic}/*.*`, `!${paths.appPublic}/*.html`], paths.appBuild);
 console.log('copy success!');
 // fs.copySync(paths.appPublic, paths.appBuild, {
 //  dereference: true,
 //  filter: file => file !== paths.appHtml,
 // });
}
ログイン後にコピー

以上修改后测试下yarn buildyarn add globby を使用して表示しますhtml ファイル

config/paths.js を変更する

// 增加模块
yarn add node-sass-chokidar npm-run-all
// package.json删除配置
"start": "node scripts/start.js",
"build": "node scripts/build.js",
// package.json里面增加scripts
"build-css": "node-sass-chokidar src/scss -o src/css",
"watch-css": "npm run build-css && node-sass-chokidar src/scss -o src/css --watch --recursive",
"start-js": "node scripts/start.js",
"start": "npm-run-all -p watch-css start-js",
"build-js": "node scripts/build.js",
"build": "npm-run-all build-css build-js",
ログイン後にコピー

config/webpack.config.dev.js を変更する

yarn add html-loader
<!--index.html-->
<%= require('html-loader!./partials/header.html') %>
ログイン後にコピー
config/webpackDevServer.config.js を変更する

<img src="<%= require('../src/imgs/phone.png') %>" alt="">
ログイン後にコピー

上記は開発モードでの変更です。yarn start を試してください。

プロダクトプロセスを変更する

config/

rrreeeを変更する

コピーモジュールを追加する(yarn add cpy)

scripts/build.jsを変更する

rrreee

上記の変更後にyarnをテストするbuild対応するHTMLの生成が正しいか確認してください、正常です。

追加機能
sassサポート (create-react-appのドキュメントを参照してください。"start": "react-scripts start"、"build": "react-scripts build"を直接コピーしないように注意してください) , 以前にyarn ejectがあるので、この方法で使用すると問題があります。自分で試してみてください)

rrreee🎜html import module🎜rrreee🎜を使用しない場合は、htmlにimgを記述してビルドすることができます。 js require🎜rrreee🎜 を作成しない限り、それをパッケージ化することはできません。後でハッシュとその他の設定をキャンセルする必要がありますが、これは記録されません。 🎜🎜この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 🎜🎜推奨読書: 🎜🎜🎜webpack+react開発環境を構築する方法🎜🎜🎜🎜🎜JSを使用して3des+base64暗号化および復号アルゴリズムを実装する方法🎜🎜🎜

以上が複数のページをサポートするように create-react-app を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DingTalk のグループ内の個人名を変更する方法_DingTalk のグループ内の個人名を変更する方法 DingTalk のグループ内の個人名を変更する方法_DingTalk のグループ内の個人名を変更する方法 Mar 29, 2024 pm 08:41 PM

DingTalk のグループ内の個人名を変更する方法_DingTalk のグループ内の個人名を変更する方法

ユーザーフォルダー名を変更する方法: Win11 チュートリアル ユーザーフォルダー名を変更する方法: Win11 チュートリアル Jan 09, 2024 am 10:34 AM

ユーザーフォルダー名を変更する方法: Win11 チュートリアル

Douyin Blue V の名前は変更できますか?法人Douyin Blue Vアカウントの名前を変更する手順は何ですか? Douyin Blue V の名前は変更できますか?法人Douyin Blue Vアカウントの名前を変更する手順は何ですか? Mar 22, 2024 pm 12:51 PM

Douyin Blue V の名前は変更できますか?法人Douyin Blue Vアカウントの名前を変更する手順は何ですか?

Win11の電源モード変更場所と方法 Win11の電源モード変更場所と方法 Dec 30, 2023 pm 05:25 PM

Win11の電源モード変更場所と方法

PyCharm の背景色調整のヒント: すぐにマスターしましょう! PyCharm の背景色調整のヒント: すぐにマスターしましょう! Feb 03, 2024 am 09:39 AM

PyCharm の背景色調整のヒント: すぐにマスターしましょう!

Win10のスリープ時間変更のヒントが明らかに Win10のスリープ時間変更のヒントが明らかに Mar 08, 2024 pm 06:39 PM

Win10のスリープ時間変更のヒントが明らかに

pipソースを高速化し、ダウンロード速度が遅い問題を解決します pipソースを高速化し、ダウンロード速度が遅い問題を解決します Jan 17, 2024 am 10:18 AM

pipソースを高速化し、ダウンロード速度が遅い問題を解決します

win11 ウィンドウの角を丸い角に変更するためのガイド win11 ウィンドウの角を丸い角に変更するためのガイド Dec 31, 2023 pm 08:35 PM

win11 ウィンドウの角を丸い角に変更するためのガイド

See all articles