Yes. My script also has some "aws s3 sync", "aws s3 cp” and "aws cloudfront 
create-invalidation” commands to upload the app after updating the version info.

The sync commands (for the whole release directory has these arguments:

 --exclude "*.DS_Store*" --delete --cache-control max-age=2592000 --acl 
public-read

The cp command for the index.html file has these arguments:

 --metadata-directive REPLACE --cache-control max-age=60,public --content-type 
text/html --acl public-read


> On Mar 9, 2023, at 11:42 PM, Hugo Ferreira <hferreira...@gmail.com> wrote:
> 
> Thank you.
> 
> OK, after you build-release you run a script that does exactly that.
> 
> Harbs <harbs.li...@gmail.com> escreveu no dia quinta, 9/03/2023 à(s) 21:37:
> 
>> I have a bash script to stage my app that looks like this:
>> 
>> version=$(cat $DIR/releases.json | jq '.version')
>> version="${version%\"}"
>> version="${version#\"}"
>> 
>> build=$(node -e 'console.log(Date.now())')
>> jq '.build = '$build releases.json > tmp.$$.json && mv tmp.$$.json
>> releases.json
>> 
>> sed -ie "s/MyApp.js/MyApp.js?{build_number}/g" bin/js-release/index.html
>> sed -ie "s/{build_number}/$build/g" bin/js-release/index.html
>> sed -ie "s/{version_number}/$version/g" bin/js-release/index.html
>> 
>> releases.json has the version and the build number is updated by this
>> script.
>> 
>> The template html has this:
>> 
>>                <meta name="build" content="{build_number}">
>>                <meta name="version" content="{version_number}">
>>                <link rel="stylesheet" type="text/css"
>> href="${application}.css?{build_number}">
>> 
>> The HTML file on the server has a very short TTL. The rest of the files
>> have a much longer TTL. The build script busts the cache when it’s deployed.
>> 
>> Change “MyApp” to the name of your app.
>> 
>> HTH,
>> Harbs
>> 
>> 
>>> On Mar 9, 2023, at 10:43 PM, Hugo Ferreira <hferreira...@gmail.com>
>> wrote:
>>> 
>>> Hi,
>>> 
>>> I'm releasing now updates more often and sometimes (many times), the
>>> browser cache my App.js
>>> In a quick google search I found a solution (more a workaround) =>
>>> 
>> https://stackoverflow.com/questions/1011605/clear-the-cache-in-javascript
>>> When I build - release with VS Code, it inject this line on my html
>>> file:<script type="text/javascript" src="./App.js"></script>
>>> So, I don't have control over it.
>>> 
>>> What I would like to do is something like have a version flag of my App
>> in
>>> the asconfig.json and when I build - relase the compiler inject something
>>> like:<script type="text/javascript" src="./App.js?v=1"></script>
>>> <script type="text/javascript" src="./App.js?v=2"></script>
>>> ...
>>> 
>>> This is possible today ?
>>> 
>>> Regards,
>>> Hugo.
>> 
>> 

Reply via email to