ホームページ  >  記事  >  ウェブフロントエンド  >  複数のページをサポートするように create-react-app を変更する方法

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

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-28 15:54:462216ブラウズ

今回は、マルチページをサポートするために 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(&#39;html-loader!./partials/header.html&#39;) %>
config/webpackDevServer.config.js を変更する

<img src="<%= require(&#39;../src/imgs/phone.png&#39;) %>" 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 までご連絡ください。