最好的解决方案是访问 webpack 配置文件并将包文件名设置为静态文件名。基于静态文件内容的哈希名对于浏览器缓存很有用。但是,如果不需要这样做,您最好的选择可能是退出您的 create-react-app 并调整 webpack 配置。
对于 create-react-app 来说,这可以派生 react-scripts 模块并进行这样的调整。
如果您出于某种原因不想接触 webpack 配置,则另一种不太可靠的方法是创建 bash 脚本。
此脚本与您的 package.json 位于同一目录中,并从 npm run build 命令的输出中 greps 包的文件名。然后将 css 和 js 包复制到相应 css 和 js 目录下的 django static 文件夹中。
build-django-static.sh
#!/usr/bin/env bash
for bundle in $(npm run build | grep -o 'build\/static\/\S*')
do
filename=$(basename "$bundle")
extension="${filename##*.}"
outputpath=../core/static/${extension}/bundle.${extension}
cp $bundle $outputpath
echo copied $bundle to $outputpath
done
注意 - 将 $outputpath 变量更改为指向静态 django 目录的正确路径至关重要。
然后将自定义 npm 脚本添加到调用此 bash 脚本的 package.json 中。
"scripts": {
...
"build-django-static": "bash ./build-django-static.sh"
...
}
然后通过从与您的 package.json 相同的目录运行以下命令来调用 npm 脚本:
npm run build-django-static