microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
fff0cefd8a82ce5ce2d14be976c4c8178dcb42aa

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

gulp_scripts/release.js

129lines · modeblame

c29f0740benjaminbi3 years ago1const gulp = require("gulp");
2const log = require("fancy-log");
3const path = require("path");
4const os = require("os");
5const fs = require("fs");
6const GulpExtras = require("../tools/gulp-extras");
7
8const isNightly = process.argv.includes("--nightly");
e9123b75Ezio Li11 months ago9const useNpm = process.argv.includes("--no-yarn");
3016b3b0Ezio Li9 months ago10const isPrepublish = process.argv.includes("--no-prepublish");
b203fbbfbenjaminbi3 years ago11const extensionName = isNightly ? "vscode-react-native-preview" : "vscode-react-native";
c29f0740benjaminbi3 years ago12const executeCommand = GulpExtras.executeCommand;
13
14function release(cb) {
15prepareLicenses();
16cb();
17}
18
19function prepareLicenses() {
20const backupFiles = [
21"LICENSE.txt",
22"ThirdPartyNotices.txt",
23"package.json",
24"package-lock.json",
25];
26const backupFolder = path.resolve(path.join(os.tmpdir(), "vscode-react-native"));
27if (!fs.existsSync(backupFolder)) {
28fs.mkdirSync(backupFolder);
29}
30
31return Promise.resolve()
32.then(() => {
33/* back up LICENSE.txt, ThirdPartyNotices.txt, README.md */
34log("Backing up license files to " + backupFolder + "...");
35backupFiles.forEach(fileName => {
36fs.writeFileSync(path.join(backupFolder, fileName), fs.readFileSync(fileName));
37});
38
39/* copy over the release package license files */
40log("Preparing license files for release...");
41fs.writeFileSync("LICENSE.txt", fs.readFileSync("release/LICENSE.txt"));
42fs.writeFileSync(
43"ThirdPartyNotices.txt",
44fs.readFileSync("release/ThirdPartyNotices.txt"),
45);
46})
47.then(() => {
48let packageJson = readJson("/package.json");
49packageJson.main = "/dist/rn-extension";
3016b3b0Ezio Li9 months ago50
51if (isPrepublish) {
52log("Ignore vscode:prepublish script before vsce package");
53const scripts = packageJson.scripts;
54delete scripts["vscode:prepublish"];
55}
56
c29f0740benjaminbi3 years ago57if (isNightly) {
dd8d7777Ezio Li1 years ago58log("Performing gulp release...");
c29f0740benjaminbi3 years ago59packageJson.version = getVersionNumber();
60packageJson.name = extensionName;
61packageJson.preview = true;
62packageJson.displayName += " (Preview)";
63}
64writeJson("/package.json", packageJson);
65log("Creating release package...");
66return new Promise((resolve, reject) => {
67// NOTE: vsce must see npm 3.X otherwise it will not correctly strip out dev dependencies.
e9123b75Ezio Li11 months ago68let vsceArgs = ["package"];
840f2e15Zhen Zhen Yuan (BEYONDSOFT CONSULTING INC)7 months ago69const useBun = process.argv.includes("--bun");
70if (useBun) {
71vsceArgs = ["package", "--no-yarn"];
72log("Using bun for vsce packaging...");
73} else if (useNpm) {
e9123b75Ezio Li11 months ago74vsceArgs = ["package", "--no-yarn"];
75log("Using npm for vsce packaging...");
76} else {
77log("Using yarn for vsce packaging...");
78}
c29f0740benjaminbi3 years ago79executeCommand(
80"vsce",
e9123b75Ezio Li11 months ago81vsceArgs,
c29f0740benjaminbi3 years ago82arg => {
83if (arg) {
84reject(arg);
85}
86resolve();
87},
88{ cwd: appRoot },
89);
90});
91})
92.finally(() => {
93/* restore backed up files */
94log("Restoring modified files...");
95backupFiles.forEach(fileName => {
96fs.writeFileSync(
97path.join(appRoot, fileName),
98fs.readFileSync(path.join(backupFolder, fileName)),
99);
100});
101});
102}
103
104function readJson(file) {
105const contents = fs.readFileSync(path.join(appRoot, file), "utf-8").toString();
106return JSON.parse(contents);
107}
108
109function writeJson(file, jsonObj) {
110const content = JSON.stringify(jsonObj, null, 2);
111fs.writeFileSync(path.join(appRoot, file), content);
112}
113
114const getVersionNumber = () => {
115const date = new Date(new Date().toLocaleString("en-US", { timeZone: "America/Los_Angeles" }));
116
117return [
118// YY
119date.getFullYear(),
120// MM,
121date.getMonth() + 1,
122//DDHH
123`${date.getDate()}${String(date.getHours()).padStart(2, "0")}`,
124].join(".");
125};
126
127module.exports = {
128release,
e4001e74benjaminbi3 years ago129};