create-react-app采用一个react-scripts这个库,你的问题回答很简单,看看源码就知道了。react-scripts包里面的config文件里面有一个webpack.config.dev.js这个webpack配置文件,从配置文件中可以清楚看到下面这段代码。
new HtmlWebpackPlugin({
inject: true,
template: paths.appHtml,
}),
其中这个paths对应的文件就是同级目录下paths.js这个文件,怎么得到来的?webpack.config.dev.js有一行代码写的很清楚。
const paths = require('./paths');
而paths.js这个文件中,很清楚可以看到appHtml对应的正是public/index.html文件。源码是个好东西,多看看!
module.exports = {
dotenv: resolveApp('.env'),
appPath: resolveApp('.'),
appBuild: resolveApp('build'),
appPublic: resolveApp('public'),
appHtml: resolveApp('public/index.html'),
appIndexJs: resolveApp('src/index.js'),
appPackageJson: resolveApp('package.json'),
appSrc: resolveApp('src'),
yarnLockFile: resolveApp('yarn.lock'),
testsSetup: resolveApp('src/setupTests.js'),
appNodeModules: resolveApp('node_modules'),
publicUrl: getPublicUrl(resolveApp('package.json')),
servedPath: getServedPath(resolveApp('package.json')),
// These properties only exist before ejecting:
ownPath: resolveOwn('.'),
ownNodeModules: resolveOwn('node_modules'), // This is empty on npm 3
};