
วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: เข้าสู่การเรียนรู้

รูปภาพด้านบนแสดงข้อมูล测试环境/开发环境ที่แสดงบนเพจ [บทช่วยสอนที่เกี่ยวข้องที่แนะนำ: "บทช่วยสอนเชิงมุม"]
จะมีการแนะนำในภายหลัง

รูปภาพด้านบนแสดงข้อมูล Git Commit ของการส่งแต่ละครั้ง แน่นอนว่าฉันจะบันทึกการส่งทุกครั้งที่นี่
ดังนั้น ลองใช้ Angular เพื่อให้ได้เอฟเฟกต์ถัดไป เช่นเดียวกับ React และ Vue
เนื่องจากจุดมุ่งเน้นที่นี่ไม่ใช่การสร้างสภาพแวดล้อม เราจึงสามารถใช้โครง angular-cli เพื่อสร้างโครงการโดยตรงได้
ขั้นตอนที่ 1: ติดตั้งเครื่องมือนั่งร้าน
npm install -g @angular/cli
ขั้นตอนที่ 2: สร้างโครงการ
# ng ใหม่ PROJECT_NAME ng ใหม่ ng-commit
ขั้นตอนที่ 3: เรียกใช้โครงการ
npm run start
โครงการกำลังทำงานอยู่ โดยจะฟังพอร์ต 4200 โดยค่าเริ่มต้น เพียงเปิด http://localhost:4200/ ในเบราว์เซอร์
ภายใต้สมมติฐานที่ว่าพอร์ต 4200 ไม่ถูกครอบครอง
ในขณะนี้ องค์ประกอบของโฟลเดอร์คีย์ src ของโปรเจ็กต์ ng-commit จะเป็นดังนี้:
src ├── แอป // เนื้อหาแอปพลิเคชัน │ ├── app-routing.module.ts // โมดูลเส้นทาง │ . │ └── app.module.ts // โมดูลแอปพลิเคชัน ├── สินทรัพย์ // ทรัพยากรคงที่ ├── main.ts // ไฟล์รายการ └── style.less // โครงสร้างไดเร็กทอรีเหนือสไตล์โกลบอล
เราจะเพิ่มไดเร็กทอรี services ในไดเร็กทอรี app และไฟล์ version.json ในไดเร็กทอรี assets ในภายหลัง
และสร้างไฟล์ version.txt ในไดเร็กทอรีรากเพื่อจัดเก็บข้อมูลที่ส่ง สร้างไฟล์ commit.js ในไดเร็กทอรีรากเพื่อดำเนินการข้อมูลการส่ง
โฟกัสอยู่ที่ commit.js มาดูหัวข้อโดยตรงกัน:
const execSync = need('child_process').execSync;
const fs = ต้องการ ('fs')
const versionPath = 'version.txt'
const buildPath = 'dist'
const autoPush = จริง;
const commit = execSync('git show -s --format=%H').toString().trim(); // หมายเลขเวอร์ชันปัจจุบัน ให้ versionStr = ''; // สตริงเวอร์ชัน if(fs.existsSync( versionPath) ) {
versionStr = fs.readFileSync(versionPath).toString() + 'n';
-
ถ้า (versionStr.indexOf (กระทำ) ! = -1) {
console.warn('x1B[33m%sx1b[0m', 'warming: มีข้อมูลเวอร์ชัน git ปัจจุบันอยู่แล้ว!n')
} อื่น {
ให้ชื่อ = execSync('git show -s --format=%cn').toString().trim(); // ชื่อ ให้อีเมล = execSync('git show -s --format=%ce').toString ().trim(); // ส่งอีเมลวันที่ = new Date(execSync('git show -s --format=%cd').toString()); // วันที่ให้ข้อความ = execSync('git show -s --format=%s').toString().trim(); // คำอธิบาย versionStr = `git:${commit}nAuthor:${name}<${email}>nDate:${date .getFullYear ()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+date.getHours()+':'+date.getMinutes()}n ${message}n${อาร์เรย์ใหม่(80).join('*')}n${versionStr}`;
fs.writeFileSync(versionPath, versionStr);
// หลังจากเขียนข้อมูลเวอร์ชันแล้ว ให้ส่งข้อมูลเวอร์ชันไปที่ git ของสาขาปัจจุบันโดยอัตโนมัติ if(autoPush) { // ขั้นตอนนี้สามารถเขียนได้ตามความต้องการที่แท้จริง execSync(`git add ${ versionPath }`);
execSync(`git commit ${ versionPath } -m ส่งข้อมูลเวอร์ชันโดยอัตโนมัติ`);
execSync(`git push origin ${ execSync('git rev-parse --abbrev-ref HEAD').toString().trim() }`)
-
-
ถ้า (fs.existsSync (buildPath)) {
fs.writeFileSync(`${ buildPath }/${ versionPath }`, fs.readFileSync(versionPath))
} ไฟล์ข้างต้นสามารถประมวลผลได้โดยตรงผ่าน node commit.js เพื่ออำนวยความสะดวกในการจัดการ เราได้เพิ่มบรรทัดคำสั่งใน package.json :
"scripts": {
"กระทำ": "โหนด commit.js"
} ด้วยวิธีนี้ การใช้ npm run commit จะมีผลเหมือนกับ node commit.js
ด้วยการเตรียมการข้างต้น เราสามารถสร้างข้อมูลเวอร์ชัน version.json ในรูปแบบที่ระบุผ่านข้อมูล commit
สร้างไฟล์ version.js ใหม่ในไดเร็กทอรีรากเพื่อสร้างข้อมูลเวอร์ชัน
const execSync = ต้องการ ('child_process').execSync;
const fs = ต้องการ ('fs')
const targetFile = 'src/assets/version.json'; // ไฟล์เป้าหมายที่เก็บไว้ใน const commit = execSync('git show -s --format=%h').toString().trim(); หมายเลขเวอร์ชันที่ส่ง 7 หลักแรกของค่าแฮช la date = new Date(execSync('git show -s --format=%cd').toString()); // Date Let message = execSync('git show - s --format=%s').toString().trim(); // คำอธิบาย ให้ versionObj = {
"กระทำ": กระทำ,
"วันที่": วันที่
"ข้อความ": ข้อความ
-
ข้อมูล const = JSON.stringify (versionObj);
fs.writeFile(targetFile, data, (err) => {
ถ้า (ผิดพลาด) {
โยนผิดพลาด
-
console.log('บันทึกข้อมูล Stringify Json แล้ว')
}) เราเพิ่มบรรทัดคำสั่งใน package.json เพื่ออำนวยความสะดวกในการจัดการ:
"scripts": {
"version": "โหนด version.js"
} สร้างข้อมูลเวอร์ชันที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน สมมติว่าเรามีสภาพแวดล้อม development สภาพแวดล้อม production และสภาพแวดล้อม test
major.minor.patch ตัวอย่างเช่น: 1.1.0major.minor.patch:beta ตัวอย่างเช่น: 1.1.0:betamajor.minor.path-data:hash เช่น: 1.1.0-2022.01.01:4rtr5rgเพื่ออำนวยความสะดวกในการจัดการสภาพแวดล้อมที่แตกต่างกัน เราสร้างไฟล์ใหม่ในไดเรกทอรีรากของโครงการดังนี้:
config ├── default.json // ไฟล์การกำหนดค่าที่เรียกโดยโครงการ ├── development.json // ไฟล์การกำหนดค่าสภาพแวดล้อมการพัฒนา ├── Production.json // ไฟล์การกำหนดค่าสภาพแวดล้อมการผลิต └── test.json // ไฟล์การกำหนดค่าสภาพแวดล้อมการทดสอบ
เนื้อหาไฟล์ที่เกี่ยวข้องมีดังนี้:
// development.json - "env": "การพัฒนา", "เวอร์ชัน": "1.3.0" }
// การผลิต json - "env": "การผลิต", "เวอร์ชัน": "1.3.0" }
//test.json - "env": "ทดสอบ", "เวอร์ชัน": "1.3.0" }
default.json คัดลอกข้อมูลการกำหนดค่าของสภาพแวดล้อมที่แตกต่างกันตามบรรทัดคำสั่ง และกำหนดค่าใน package.json :
"scripts": {
"copyConfigProduction": "cp ./config/production.json ./config/default.json",
"copyConfigDevelopment": "cp ./config/development.json ./config/default.json",
"copyConfigTest": "cp ./config/test.json ./config/default.json",
} เป็นเรื่องง่ายใช่ไหม
รวมเนื้อหาของ ข้อมูลเวอร์ชันที่สร้างขึ้น เพื่อสร้างข้อมูลเวอร์ชันที่แตกต่างกันตามสภาพแวดล้อมที่แตกต่างกัน รหัสเฉพาะมีดังนี้:
const execSync = need('child_process').execSync;
const fs = ต้องการ ('fs')
const targetFile = 'src/assets/version.json'; // ไฟล์เป้าหมายที่เก็บไว้ใน const config = need('./config/default.json');
const commit = execSync('git show -s --format=%h').toString().trim(); //วันที่ให้หมายเลขเวอร์ชันที่ส่งมาในปัจจุบัน = new Date(execSync('git show -s --format =%cd').toString()); // วันที่ให้ข้อความ = execSync('git show -s --format=%s').toString().trim(); // คำอธิบาย ให้ versionObj = {
"env": config.env,
"รุ่น": "",
"กระทำ": กระทำ,
"วันที่": วันที่
"ข้อความ": ข้อความ
-
//จัดรูปแบบวันที่ const formatDay = (date) => {
ให้ formatted_date = date.getFullYear() + "." + (date.getMonth()+1) + "." +date.getDate()
กลับ formatted_date;
-
ถ้า (config.env === 'การผลิต') {
versionObj.version = config.version
-
ถ้า (config.env === 'การพัฒนา') {
versionObj.version = `${ config.version }:เบต้า`
-
ถ้า (config.env === 'ทดสอบ') {
versionObj.version = `${ config.version }-${ formatDay(date) }:${ กระทำ }`
-
ข้อมูล const = JSON.stringify (versionObj);
fs.writeFile(targetFile, data, (err) => {
ถ้า (ผิดพลาด) {
โยนผิดพลาด
-
console.log('บันทึกข้อมูล Stringify Json แล้ว')
}) เพิ่มบรรทัดคำสั่งสำหรับสภาพแวดล้อมที่แตกต่างกันใน package.json :
"scripts": {
"build:production": "npm รัน copyConfigProduction && เวอร์ชันรัน npm",
"build:development": "npm รัน copyConfigDevelopment && เวอร์ชันรัน npm",
"build:test": "npm รัน copyConfigTest && เวอร์ชันรัน npm",
} ข้อมูลเวอร์ชันที่สร้างขึ้นจะถูกจัดเก็บไว้ใน assets โดยตรง และเส้นทางเฉพาะคือ src/assets/version.json
ขั้นตอนสุดท้ายคือการแสดงข้อมูลเวอร์ชันบนเพจ โดยจะรวมกับ angular
ใช้ ng generate service version เพื่อสร้างบริการ version ในไดเร็กทอรี app/services เพิ่มข้อมูลคำขอไปยังไฟล์ version.service.ts ที่สร้างขึ้นดังนี้:
import { Injectable } from '@ Angular/core';
นำเข้า { HttpClient } จาก '@ เชิงมุม/common/http';
นำเข้า { สังเกตได้ } จาก 'rxjs';
@ฉีด({
ให้ไว้ใน: 'ราก'
-
ส่งออกคลาส VersionService {
ตัวสร้าง (
http ส่วนตัว: HttpClient
-
getVersion สาธารณะ (): สังเกตได้ <ใด ๆ> {
ส่งคืน this.http.get('assets/version.json')
-
} ก่อนที่จะใช้คำขอ ให้เมานต์โมดูล HttpClientModule ในไฟล์ app.module.ts :
import { HttpClientModule } from '@angular/common/http';
-
นำเข้า: [
HttpClientModule
] จากนั้นเพียงเรียกมันในส่วนประกอบ นี่คือไฟล์ app.component.ts :
import { Component } from '@angular/core';
นำเข้า { VersionService } จาก './services/version.service' // แนะนำบริการเวอร์ชัน @Component ({
ตัวเลือก: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
-
ส่งออกคลาส AppComponent {
รุ่นสาธารณะ: string = '1.0.0'
ตัวสร้าง (
บริการเวอร์ชันอ่านอย่างเดียวส่วนตัว: VersionService
-
ngOnInit() {
this.versionService.getVersion().สมัครสมาชิก({
ถัดไป: (ข้อมูล: ใด ๆ ) => {
this.version = data.version // เปลี่ยนข้อมูลเวอร์ชัน},
ข้อผิดพลาด: (ข้อผิดพลาด: ใด ๆ ) => {
คอนโซลข้อผิดพลาด (ข้อผิดพลาด)
-
-
-
} ณ จุดนี้ เราได้กรอกข้อมูลเวอร์ชันเรียบร้อยแล้ว ในที่สุดเรามาปรับคำสั่งของ package.json :
"scripts": {
"start": "ng เสิร์ฟ",
"version": "โหนด version.js",
"commit": "โหนด commit.js",
"build": "ng สร้าง",
"build:production": "npm รัน copyConfigProduction && เวอร์ชันการรัน npm && npm รันบิลด์",
"build:development": "npm run copyConfigDevelopment && npm run version && npm run build",
"build:test": "npm รัน copyConfigTest && เวอร์ชันรัน npm && npm รันบิลด์",
"copyConfigProduction": "cp ./config/production.json ./config/default.json",
"copyConfigDevelopment": "cp ./config/development.json ./config/default.json",
"copyConfigTest": "cp ./config/test.json ./config/default.json"
} วัตถุประสงค์ของการใช้ scripts คือเพื่ออำนวยความสะดวกในการจัดการ แต่ยังอำนวยความสะดวกในการสร้างและการโทร jenkins ด้วย ในส่วนของ jenkins ส์ ผู้สนใจสามารถทดลองได้ด้วยตนเอง