I'm using a VS Code Extension "Run Terminal Command".
I'm using macOS environment
I'm using jq macOS terminal app (this app is usefull to grab variables from
a json file with a simple command)

Unfortunately, this extension does not support multiple command, so I end
up doing everthing in a single line !

This is my plugin configuration (to run with a single rigth click in the
build/release folder):
"runTerminalCommand.commands": [
{
"command": "rm -r .DS_Store RoyaleFramework.swc App.js.map pt org
resources/themes resources/index-template.html resources/styles.less
resources/images/BackgroundBuilding_Original.png && export
royale_app_version=`jq -r '.version' {resource}/../../asconfig.json` && sed
-i '' \"s/App.js/App.js?v=$royale_app_version/g\" index.html && zip -r
/Volumes/macOS/Users/hugo/Desktop/gc.zip {resource}",
"auto": true,
"preserve": true,
"group": "Post Build Apache Royale"
}
]

The comand runs:
1. Clean unwanted files
2. I have the version on the project file, so grab that to a environment
variable
3. Inject the variable in the index.html
4. Zip everything and put (hardcoded path) on my desktop folder

Hugo Ferreira <hferreira...@gmail.com> escreveu no dia sexta, 10/03/2023
à(s) 10:08:

> Thanks.
> On my case, I don't use maven but I see that the majority of us, have the
> same problem and each one applies is own script.
>
> Brian Raymes <brian.ray...@teotech.com> escreveu no dia sexta, 10/03/2023
> à(s) 00:59:
>
>> If you use Maven, you can the maven-replacer-plugin to automate the
>> version/timestamp/build/etc for every build. One could also filter out
>> things such unwanted files like .DS_Store with other plugins.
>>
>> For instance:
>>      . . .
>>      <timestamp>${maven.build.timestamp}</timestamp>
>>      . . .
>>       <build>
>>         <plugins>
>>           <plugin>
>>             <groupId>com.google.code.maven-replacer-plugin</groupId>
>>             <artifactId>replacer</artifactId>
>>             <version>${google.replacer.version}</version>
>>             <executions>
>>               <execution>
>>                 <phase>prepare-package</phase>
>>                 <goals>
>>                   <goal>replace</goal>
>>                 </goals>
>>               </execution>
>>             </executions>
>>             <configuration>
>>               <ignoreMissingFile>false</ignoreMissingFile>
>>               <file>${compiler.output-dir}/index.html</file>
>>               <replacements>
>>                 <replacement>
>>                   <token>
>>                     <![CDATA[<script type="text/javascript"
>> src="./App.js"></script>]]>
>>                   </token>
>>                   <value>
>>                     <![CDATA[<script defer type="text/javascript"
>> src="./App.js?v=${timestamp}"></script>]]>
>>                   </value>
>>                 </replacement>
>>                 <replacement>
>>                   <token>
>>                     <![CDATA[<link rel="stylesheet" type="text/css"
>> href="App.min.css">]]>
>>                   </token>
>>                   <value>
>>                     <![CDATA[<link rel="stylesheet" type="text/css"
>> href="App.min.css?v=${timestamp}">]]>
>>                   </value>
>>                 </replacement>
>>               </replacements>
>>             </configuration>
>>           </plugin>
>>      . . .
>>
>> Brian
>>
>> -----Original Message-----
>> From: Hugo Ferreira <hferreira...@gmail.com>
>> Sent: Thursday, March 9, 2023 4:30 PM
>> To: dev@royale.apache.org
>> Subject: [EXTERNAL] Re: Clear the cache strategy
>>
>> I found this VS Code extension:
>>
>> https://marketplace.visualstudio.com/items?itemName=adrianwilczynski.terminal-commands
>> With this I'm writing a script, so then after build-release, right-click
>> on the release folder to clean files and inject the version.
>>
>> Hugo Ferreira <hferreira...@gmail.com> escreveu no dia sexta, 10/03/2023
>> à(s) 00:05:
>>
>> > Thank you all.
>> > You all gave me greate ideas.
>> > Josh, no need to spend time on this.
>> > I will create my own script (remove the .DS files is also a good idea
>> > - I hate the mac pollute all my folders with that).
>> >
>> > Harbs <harbs.li...@gmail.com> escreveu no dia quinta, 9/03/2023 à(s)
>> > 21:56:
>> >
>> >> 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-javasc
>> >> ript
>> >> >>> 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