มันเป็นความคิดที่ดีที่จะประกาศversion
ว่าเป็นตัวแปรสภาพแวดล้อมดังนั้นคุณสามารถใช้มันได้ทุกที่ในโครงการของคุณ (โดยเฉพาะในกรณีที่โหลดไฟล์ที่จะถูกแคชตามเวอร์ชั่นe.g. yourCustomjsonFile.json?version=1.0.0
)
เพื่อป้องกันปัญหาด้านความปลอดภัย(ตามที่ @ZetaPR กล่าวถึง)เราสามารถใช้วิธีนี้ (ตามความคิดเห็นของ @sgwatgit)
โดยย่อ: เราสร้างyourProjectPath \ PreBuild.jsไฟล์. แบบนี้:
const path = require('path');
const colors = require('colors/safe');
const fs = require('fs');
const dada = require.resolve('./package.json');
const appVersion = require('./package.json').version;
console.log(colors.cyan('\nRunning pre-build tasks'));
const versionFilePath = path.join(__dirname + '/src/environments/version.ts');
const src = `export const version = '${appVersion}';
`;
console.log(colors.green(`Dada ${colors.yellow(dada)}`));
// ensure version module pulls value from package.json
fs.writeFile(versionFilePath, src, { flat: 'w' }, function (err) {
if (err) {
return console.log(colors.red(err));
}
console.log(colors.green(`Updating application version
${colors.yellow(appVersion)}`));
console.log(`${colors.green('Writing version module to
')}${colors.yellow(versionFilePath)}\n`);
});
ตัวอย่างด้านบนจะสร้างไฟล์ใหม่/src/environments/version.ts
ซึ่งมีชื่อคงที่version
และตั้งค่าโดยแยกค่าจากpackage.json
ไฟล์
เพื่อที่จะเรียกใช้เนื้อหาของการPreBuild.json
สร้างเราเพิ่มไฟล์นี้ลงในPackage.json
-> "scripts": { ... }"
ส่วนดังต่อไปนี้ ดังนั้นเราสามารถเรียกใช้โครงการโดยใช้รหัสนี้npm start
::
{
"name": "YourProject",
"version": "1.0.0",
"license": "...",
"scripts": {
"ng": "...",
"start": "node PreBuild.js & ng serve",
},...
}
ตอนนี้เราสามารถนำเข้าเวอร์ชันและใช้งานได้ทุกที่ที่ต้องการ:
import { version } from '../../../../environments/version';
...
export class MyComponent{
...
public versionUseCase: string = version;
}