@rushstack/package-extractor 0.8.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +24 -0
- package/CHANGELOG.md +13 -1
- package/dist/package-extractor.d.ts +13 -19
- package/dist/scripts/create-links.js +23903 -93
- package/dist/scripts/create-links.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/AssetHandler.d.ts +50 -0
- package/lib/AssetHandler.d.ts.map +1 -0
- package/lib/AssetHandler.js +165 -0
- package/lib/AssetHandler.js.map +1 -0
- package/lib/PackageExtractor.d.ts +12 -19
- package/lib/PackageExtractor.d.ts.map +1 -1
- package/lib/PackageExtractor.js +80 -224
- package/lib/PackageExtractor.js.map +1 -1
- package/lib/Utils.d.ts +20 -0
- package/lib/Utils.d.ts.map +1 -1
- package/lib/Utils.js +36 -1
- package/lib/Utils.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/scripts/create-links.js +84 -110
- package/lib/scripts/create-links.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,145 +1,119 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
|
|
3
3
|
// See LICENSE in the project root for license information.
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
-
}
|
|
10
|
-
Object.defineProperty(o, k2, desc);
|
|
11
|
-
}) : (function(o, m, k, k2) {
|
|
12
|
-
if (k2 === undefined) k2 = k;
|
|
13
|
-
o[k2] = m[k];
|
|
14
|
-
}));
|
|
15
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
-
}) : function(o, v) {
|
|
18
|
-
o["default"] = v;
|
|
19
|
-
});
|
|
20
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
-
if (mod && mod.__esModule) return mod;
|
|
22
|
-
var result = {};
|
|
23
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
-
__setModuleDefault(result, mod);
|
|
25
|
-
return result;
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
6
|
};
|
|
27
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
8
|
// THIS SCRIPT IS GENERATED BY THE "rush deploy" COMMAND.
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const
|
|
9
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const node_core_library_1 = require("@rushstack/node-core-library");
|
|
13
|
+
const terminal_1 = require("@rushstack/terminal");
|
|
14
|
+
const MAX_CONCURRENCY = node_os_1.default.cpus().length * 2;
|
|
15
|
+
const CREATE_ACTION_NAME = 'create';
|
|
16
|
+
const REMOVE_ACTION_NAME = 'remove';
|
|
17
|
+
const REALIZE_FILES_OPTION_NAME = '--realize-files';
|
|
32
18
|
const TARGET_ROOT_SCRIPT_RELATIVE_PATH = '{TARGET_ROOT_SCRIPT_RELATIVE_PATH}';
|
|
33
|
-
const TARGET_ROOT_FOLDER =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
static createSymbolicLinkFile(options) {
|
|
41
|
-
fs.symlinkSync(options.linkTargetPath, options.newLinkPath, 'file');
|
|
42
|
-
}
|
|
43
|
-
static createSymbolicLinkFolder(options) {
|
|
44
|
-
fs.symlinkSync(options.linkTargetPath, options.newLinkPath, 'dir');
|
|
45
|
-
}
|
|
46
|
-
static createHardLink(options) {
|
|
47
|
-
fs.linkSync(options.linkTargetPath, options.newLinkPath);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function ensureFolder(folderPath) {
|
|
51
|
-
if (!folderPath) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
if (fs.existsSync(folderPath)) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const parentPath = path.dirname(folderPath);
|
|
58
|
-
if (parentPath && parentPath !== folderPath) {
|
|
59
|
-
ensureFolder(parentPath);
|
|
60
|
-
}
|
|
61
|
-
fs.mkdirSync(folderPath);
|
|
62
|
-
}
|
|
63
|
-
function removeLinks(targetRootFolder, extractorMetadataObject) {
|
|
64
|
-
for (const linkInfo of extractorMetadataObject.links) {
|
|
65
|
-
// Link to the relative path for symlinks
|
|
66
|
-
const newLinkPath = path.join(targetRootFolder, linkInfo.linkPath);
|
|
67
|
-
if (fs.existsSync(newLinkPath)) {
|
|
68
|
-
fs.unlinkSync(newLinkPath);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
19
|
+
const TARGET_ROOT_FOLDER = node_path_1.default.resolve(__dirname, TARGET_ROOT_SCRIPT_RELATIVE_PATH);
|
|
20
|
+
async function removeLinksAsync(terminal, targetRootFolder, extractorMetadataObject) {
|
|
21
|
+
await node_core_library_1.Async.forEachAsync(extractorMetadataObject.links, async ({ linkPath }) => {
|
|
22
|
+
const newLinkPath = `${targetRootFolder}/${linkPath}`;
|
|
23
|
+
terminal.writeVerboseLine(`Removing link at path "${newLinkPath}"`);
|
|
24
|
+
await node_core_library_1.FileSystem.deleteFileAsync(newLinkPath, { throwIfNotExists: false });
|
|
25
|
+
}, { concurrency: MAX_CONCURRENCY });
|
|
71
26
|
}
|
|
72
|
-
function
|
|
73
|
-
|
|
27
|
+
async function createLinksAsync(terminal, targetRootFolder, extractorMetadataObject) {
|
|
28
|
+
await node_core_library_1.Async.forEachAsync(extractorMetadataObject.links, async (linkInfo) => {
|
|
74
29
|
// Link to the relative path for symlinks
|
|
75
|
-
const newLinkPath =
|
|
76
|
-
const linkTargetPath =
|
|
30
|
+
const newLinkPath = `${targetRootFolder}/${linkInfo.linkPath}`;
|
|
31
|
+
const linkTargetPath = `${targetRootFolder}/${linkInfo.targetPath}`;
|
|
77
32
|
// Make sure the containing folder exists
|
|
78
|
-
|
|
33
|
+
await node_core_library_1.FileSystem.ensureFolderAsync(node_path_1.default.dirname(newLinkPath));
|
|
79
34
|
// NOTE: This logic is based on NpmLinkManager._createSymlink()
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
35
|
+
if (linkInfo.kind === 'folderLink') {
|
|
36
|
+
terminal.writeVerboseLine(`Creating linked folder at path "${newLinkPath}"`);
|
|
37
|
+
await node_core_library_1.FileSystem.createSymbolicLinkJunctionAsync({ newLinkPath, linkTargetPath });
|
|
38
|
+
}
|
|
39
|
+
else if (linkInfo.kind === 'fileLink') {
|
|
40
|
+
// Use hardlinks for Windows and symlinks for other platforms since creating a symbolic link
|
|
41
|
+
// requires administrator permission on Windows. This may cause unexpected behaviour for consumers
|
|
42
|
+
// of the hardlinked files. If this becomes an issue, we may need to revisit this.
|
|
43
|
+
terminal.writeVerboseLine(`Creating linked file at path "${newLinkPath}"`);
|
|
44
|
+
if (process.platform === 'win32') {
|
|
45
|
+
await node_core_library_1.FileSystem.createHardLinkAsync({ newLinkPath, linkTargetPath });
|
|
84
46
|
}
|
|
85
47
|
else {
|
|
86
|
-
|
|
87
|
-
// administrator permission.
|
|
88
|
-
// NOTE: We cannot use the relative path for hard links
|
|
89
|
-
FileSystem.createHardLink({ newLinkPath, linkTargetPath });
|
|
48
|
+
await node_core_library_1.FileSystem.createSymbolicLinkFileAsync({ newLinkPath, linkTargetPath });
|
|
90
49
|
}
|
|
91
50
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
51
|
+
}, { concurrency: MAX_CONCURRENCY });
|
|
52
|
+
}
|
|
53
|
+
async function realizeFilesAsync(terminal, targetRootFolder, extractorMetadataObject) {
|
|
54
|
+
await node_core_library_1.Async.forEachAsync(extractorMetadataObject.files, async (relativeFilePath) => {
|
|
55
|
+
const filePath = `${targetRootFolder}/${relativeFilePath}`;
|
|
56
|
+
const realFilePath = await node_core_library_1.FileSystem.getRealPathAsync(filePath);
|
|
57
|
+
if (!node_core_library_1.Path.isEqual(realFilePath, filePath)) {
|
|
58
|
+
await node_core_library_1.FileSystem.deleteFileAsync(filePath);
|
|
59
|
+
// Hard links seem to cause build failures on Mac, so for all other operating
|
|
60
|
+
// systems we copy files.
|
|
61
|
+
terminal.writeVerboseLine(`Realizing file at path "${filePath}"`);
|
|
62
|
+
if (process.platform === 'win32') {
|
|
63
|
+
await node_core_library_1.FileSystem.createHardLinkAsync({ newLinkPath: filePath, linkTargetPath: realFilePath });
|
|
97
64
|
}
|
|
98
65
|
else {
|
|
99
|
-
FileSystem.
|
|
66
|
+
await node_core_library_1.FileSystem.copyFileAsync({ sourcePath: realFilePath, destinationPath: filePath });
|
|
100
67
|
}
|
|
101
68
|
}
|
|
102
|
-
}
|
|
69
|
+
}, { concurrency: MAX_CONCURRENCY });
|
|
103
70
|
}
|
|
104
|
-
function showUsage() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
71
|
+
function showUsage(terminal) {
|
|
72
|
+
terminal.writeLine('Usage:');
|
|
73
|
+
terminal.writeLine(` node create-links.js ${CREATE_ACTION_NAME} [${REALIZE_FILES_OPTION_NAME}]`);
|
|
74
|
+
terminal.writeLine(` node create-links.js ${REMOVE_ACTION_NAME}`);
|
|
75
|
+
terminal.writeLine('');
|
|
76
|
+
terminal.writeLine('Creates or removes the symlinks for the output folder created by "rush deploy".');
|
|
77
|
+
terminal.writeLine('The link information is read from "extractor-metadata.json" in the same folder.');
|
|
110
78
|
}
|
|
111
|
-
function
|
|
79
|
+
async function runAsync(terminal) {
|
|
112
80
|
// Example: [ "node.exe", "create-links.js", ""create" ]
|
|
113
81
|
const args = process.argv.slice(2);
|
|
114
|
-
if (
|
|
115
|
-
|
|
82
|
+
if ((args[0] !== CREATE_ACTION_NAME && args[0] !== REMOVE_ACTION_NAME) ||
|
|
83
|
+
(args[0] === CREATE_ACTION_NAME && args[1] && args[1] !== REALIZE_FILES_OPTION_NAME) ||
|
|
84
|
+
(args[0] === REMOVE_ACTION_NAME && args[1])) {
|
|
85
|
+
showUsage(terminal);
|
|
116
86
|
return false;
|
|
117
87
|
}
|
|
118
88
|
const extractorMetadataPath = `${__dirname}/extractor-metadata.json`;
|
|
119
|
-
if (!
|
|
89
|
+
if (!node_fs_1.default.existsSync(extractorMetadataPath)) {
|
|
120
90
|
throw new Error('Input file not found: ' + extractorMetadataPath);
|
|
121
91
|
}
|
|
122
|
-
const extractorMetadataJson =
|
|
92
|
+
const extractorMetadataJson = node_fs_1.default.readFileSync(extractorMetadataPath).toString();
|
|
123
93
|
const extractorMetadataObject = JSON.parse(extractorMetadataJson);
|
|
124
94
|
if (args[0] === 'create') {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
95
|
+
const realizeFiles = args[1] === '--realize-files';
|
|
96
|
+
terminal.writeLine(`Creating links for extraction at path "${TARGET_ROOT_FOLDER}"`);
|
|
97
|
+
await removeLinksAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);
|
|
98
|
+
await createLinksAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);
|
|
99
|
+
if (realizeFiles) {
|
|
100
|
+
await realizeFilesAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);
|
|
101
|
+
}
|
|
128
102
|
}
|
|
129
|
-
else {
|
|
130
|
-
|
|
131
|
-
|
|
103
|
+
else if (args[0] === 'remove') {
|
|
104
|
+
terminal.writeLine(`Removing links for extraction at path "${TARGET_ROOT_FOLDER}"`);
|
|
105
|
+
await removeLinksAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);
|
|
132
106
|
}
|
|
133
|
-
|
|
107
|
+
terminal.writeLine('The operation completed successfully.');
|
|
134
108
|
return true;
|
|
135
109
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
catch
|
|
143
|
-
|
|
144
|
-
}
|
|
110
|
+
process.exitCode = 1;
|
|
111
|
+
const terminal = new terminal_1.Terminal(new terminal_1.ConsoleTerminalProvider());
|
|
112
|
+
runAsync(terminal)
|
|
113
|
+
.then((result) => {
|
|
114
|
+
process.exitCode = result ? 0 : 1;
|
|
115
|
+
})
|
|
116
|
+
.catch((error) => {
|
|
117
|
+
terminal.writeErrorLine('ERROR: ' + error);
|
|
118
|
+
});
|
|
145
119
|
//# sourceMappingURL=create-links.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-links.js","sourceRoot":"","sources":["../../src/scripts/create-links.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n// THIS SCRIPT IS GENERATED BY THE \"rush deploy\" COMMAND.\n\n/* eslint-disable no-console */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { IFileSystemCreateLinkOptions } from '@rushstack/node-core-library';\nimport type {\n TARGET_ROOT_SCRIPT_RELATIVE_PATH_TEMPLATE_STRING as TargetRootScriptRelativePathTemplateString,\n IExtractorMetadataJson\n} from '../PackageExtractor';\n\nconst TARGET_ROOT_SCRIPT_RELATIVE_PATH: typeof TargetRootScriptRelativePathTemplateString =\n '{TARGET_ROOT_SCRIPT_RELATIVE_PATH}';\nconst TARGET_ROOT_FOLDER: string = path.resolve(__dirname, TARGET_ROOT_SCRIPT_RELATIVE_PATH);\n\n// API borrowed from @rushstack/node-core-library, since this script avoids using any\n// NPM dependencies.\nclass FileSystem {\n public static createSymbolicLinkJunction(options: IFileSystemCreateLinkOptions): void {\n fs.symlinkSync(options.linkTargetPath, options.newLinkPath, 'junction');\n }\n\n public static createSymbolicLinkFile(options: IFileSystemCreateLinkOptions): void {\n fs.symlinkSync(options.linkTargetPath, options.newLinkPath, 'file');\n }\n\n public static createSymbolicLinkFolder(options: IFileSystemCreateLinkOptions): void {\n fs.symlinkSync(options.linkTargetPath, options.newLinkPath, 'dir');\n }\n\n public static createHardLink(options: IFileSystemCreateLinkOptions): void {\n fs.linkSync(options.linkTargetPath, options.newLinkPath);\n }\n}\n\nfunction ensureFolder(folderPath: string): void {\n if (!folderPath) {\n return;\n }\n if (fs.existsSync(folderPath)) {\n return;\n }\n const parentPath: string = path.dirname(folderPath);\n if (parentPath && parentPath !== folderPath) {\n ensureFolder(parentPath);\n }\n fs.mkdirSync(folderPath);\n}\n\nfunction removeLinks(targetRootFolder: string, extractorMetadataObject: IExtractorMetadataJson): void {\n for (const linkInfo of extractorMetadataObject.links) {\n // Link to the relative path for symlinks\n const newLinkPath: string = path.join(targetRootFolder, linkInfo.linkPath);\n if (fs.existsSync(newLinkPath)) {\n fs.unlinkSync(newLinkPath);\n }\n }\n}\n\nfunction createLinks(targetRootFolder: string, extractorMetadataObject: IExtractorMetadataJson): void {\n for (const linkInfo of extractorMetadataObject.links) {\n // Link to the relative path for symlinks\n const newLinkPath: string = path.join(targetRootFolder, linkInfo.linkPath);\n const linkTargetPath: string = path.join(targetRootFolder, linkInfo.targetPath);\n\n // Make sure the containing folder exists\n ensureFolder(path.dirname(newLinkPath));\n\n // NOTE: This logic is based on NpmLinkManager._createSymlink()\n if (process.platform === 'win32') {\n if (linkInfo.kind === 'folderLink') {\n // For directories, we use a Windows \"junction\". On Unix, this produces a regular symlink.\n FileSystem.createSymbolicLinkJunction({ newLinkPath, linkTargetPath });\n } else {\n // For files, we use a Windows \"hard link\", because creating a symbolic link requires\n // administrator permission.\n\n // NOTE: We cannot use the relative path for hard links\n FileSystem.createHardLink({ newLinkPath, linkTargetPath });\n }\n } else {\n // However hard links seem to cause build failures on Mac, so for all other operating systems\n // we use symbolic links for this case.\n if (linkInfo.kind === 'folderLink') {\n FileSystem.createSymbolicLinkFolder({ newLinkPath, linkTargetPath });\n } else {\n FileSystem.createSymbolicLinkFile({ newLinkPath, linkTargetPath });\n }\n }\n }\n}\n\nfunction showUsage(): void {\n console.log('Usage:');\n console.log(' node create-links.js create');\n console.log(' node create-links.js remove');\n\n console.log('\\nCreates or removes the symlinks for the output folder created by \"rush deploy\".');\n console.log('The link information is read from \"extractor-metadata.json\" in the same folder.');\n}\n\nfunction main(): boolean {\n // Example: [ \"node.exe\", \"create-links.js\", \"\"create\" ]\n const args: string[] = process.argv.slice(2);\n\n if (args.length !== 1 || (args[0] !== 'create' && args[0] !== 'remove')) {\n showUsage();\n return false;\n }\n\n const extractorMetadataPath: string = `${__dirname}/extractor-metadata.json`;\n if (!fs.existsSync(extractorMetadataPath)) {\n throw new Error('Input file not found: ' + extractorMetadataPath);\n }\n\n const extractorMetadataJson: string = fs.readFileSync(extractorMetadataPath).toString();\n const extractorMetadataObject: IExtractorMetadataJson = JSON.parse(extractorMetadataJson);\n\n if (args[0] === 'create') {\n console.log(`\\nCreating links for extraction at path \"${TARGET_ROOT_FOLDER}\"`);\n removeLinks(TARGET_ROOT_FOLDER, extractorMetadataObject);\n createLinks(TARGET_ROOT_FOLDER, extractorMetadataObject);\n } else {\n console.log(`\\nRemoving links for extraction at path \"${TARGET_ROOT_FOLDER}\"`);\n removeLinks(TARGET_ROOT_FOLDER, extractorMetadataObject);\n }\n\n console.log('The operation completed successfully.');\n return true;\n}\n\ntry {\n process.exitCode = 1;\n if (main()) {\n process.exitCode = 0;\n }\n} catch (error) {\n console.log('ERROR: ' + error);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"create-links.js","sourceRoot":"","sources":["../../src/scripts/create-links.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n// THIS SCRIPT IS GENERATED BY THE \"rush deploy\" COMMAND.\n\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Async, FileSystem, Path } from '@rushstack/node-core-library';\nimport { Terminal, ConsoleTerminalProvider } from '@rushstack/terminal';\nimport type {\n TARGET_ROOT_SCRIPT_RELATIVE_PATH_TEMPLATE_STRING as TargetRootScriptRelativePathTemplateString,\n IExtractorMetadataJson\n} from '../PackageExtractor';\n\nconst MAX_CONCURRENCY: number = os.cpus().length * 2;\nconst CREATE_ACTION_NAME: 'create' = 'create';\nconst REMOVE_ACTION_NAME: 'remove' = 'remove';\nconst REALIZE_FILES_OPTION_NAME: '--realize-files' = '--realize-files';\n\nconst TARGET_ROOT_SCRIPT_RELATIVE_PATH: typeof TargetRootScriptRelativePathTemplateString =\n '{TARGET_ROOT_SCRIPT_RELATIVE_PATH}';\nconst TARGET_ROOT_FOLDER: string = path.resolve(__dirname, TARGET_ROOT_SCRIPT_RELATIVE_PATH);\n\nasync function removeLinksAsync(\n terminal: Terminal,\n targetRootFolder: string,\n extractorMetadataObject: IExtractorMetadataJson\n): Promise<void> {\n await Async.forEachAsync(\n extractorMetadataObject.links,\n async ({ linkPath }) => {\n const newLinkPath: string = `${targetRootFolder}/${linkPath}`;\n terminal.writeVerboseLine(`Removing link at path \"${newLinkPath}\"`);\n await FileSystem.deleteFileAsync(newLinkPath, { throwIfNotExists: false });\n },\n { concurrency: MAX_CONCURRENCY }\n );\n}\n\nasync function createLinksAsync(\n terminal: Terminal,\n targetRootFolder: string,\n extractorMetadataObject: IExtractorMetadataJson\n): Promise<void> {\n await Async.forEachAsync(\n extractorMetadataObject.links,\n async (linkInfo) => {\n // Link to the relative path for symlinks\n const newLinkPath: string = `${targetRootFolder}/${linkInfo.linkPath}`;\n const linkTargetPath: string = `${targetRootFolder}/${linkInfo.targetPath}`;\n\n // Make sure the containing folder exists\n await FileSystem.ensureFolderAsync(path.dirname(newLinkPath));\n\n // NOTE: This logic is based on NpmLinkManager._createSymlink()\n if (linkInfo.kind === 'folderLink') {\n terminal.writeVerboseLine(`Creating linked folder at path \"${newLinkPath}\"`);\n await FileSystem.createSymbolicLinkJunctionAsync({ newLinkPath, linkTargetPath });\n } else if (linkInfo.kind === 'fileLink') {\n // Use hardlinks for Windows and symlinks for other platforms since creating a symbolic link\n // requires administrator permission on Windows. This may cause unexpected behaviour for consumers\n // of the hardlinked files. If this becomes an issue, we may need to revisit this.\n terminal.writeVerboseLine(`Creating linked file at path \"${newLinkPath}\"`);\n if (process.platform === 'win32') {\n await FileSystem.createHardLinkAsync({ newLinkPath, linkTargetPath });\n } else {\n await FileSystem.createSymbolicLinkFileAsync({ newLinkPath, linkTargetPath });\n }\n }\n },\n { concurrency: MAX_CONCURRENCY }\n );\n}\n\nasync function realizeFilesAsync(\n terminal: Terminal,\n targetRootFolder: string,\n extractorMetadataObject: IExtractorMetadataJson\n): Promise<void> {\n await Async.forEachAsync(\n extractorMetadataObject.files,\n async (relativeFilePath) => {\n const filePath: string = `${targetRootFolder}/${relativeFilePath}`;\n const realFilePath: string = await FileSystem.getRealPathAsync(filePath);\n if (!Path.isEqual(realFilePath, filePath)) {\n await FileSystem.deleteFileAsync(filePath);\n\n // Hard links seem to cause build failures on Mac, so for all other operating\n // systems we copy files.\n terminal.writeVerboseLine(`Realizing file at path \"${filePath}\"`);\n if (process.platform === 'win32') {\n await FileSystem.createHardLinkAsync({ newLinkPath: filePath, linkTargetPath: realFilePath });\n } else {\n await FileSystem.copyFileAsync({ sourcePath: realFilePath, destinationPath: filePath });\n }\n }\n },\n { concurrency: MAX_CONCURRENCY }\n );\n}\n\nfunction showUsage(terminal: Terminal): void {\n terminal.writeLine('Usage:');\n terminal.writeLine(` node create-links.js ${CREATE_ACTION_NAME} [${REALIZE_FILES_OPTION_NAME}]`);\n terminal.writeLine(` node create-links.js ${REMOVE_ACTION_NAME}`);\n terminal.writeLine('');\n terminal.writeLine('Creates or removes the symlinks for the output folder created by \"rush deploy\".');\n terminal.writeLine('The link information is read from \"extractor-metadata.json\" in the same folder.');\n}\n\nasync function runAsync(terminal: Terminal): Promise<boolean> {\n // Example: [ \"node.exe\", \"create-links.js\", \"\"create\" ]\n const args: string[] = process.argv.slice(2);\n if (\n (args[0] !== CREATE_ACTION_NAME && args[0] !== REMOVE_ACTION_NAME) ||\n (args[0] === CREATE_ACTION_NAME && args[1] && args[1] !== REALIZE_FILES_OPTION_NAME) ||\n (args[0] === REMOVE_ACTION_NAME && args[1])\n ) {\n showUsage(terminal);\n return false;\n }\n\n const extractorMetadataPath: string = `${__dirname}/extractor-metadata.json`;\n if (!fs.existsSync(extractorMetadataPath)) {\n throw new Error('Input file not found: ' + extractorMetadataPath);\n }\n\n const extractorMetadataJson: string = fs.readFileSync(extractorMetadataPath).toString();\n const extractorMetadataObject: IExtractorMetadataJson = JSON.parse(extractorMetadataJson);\n\n if (args[0] === 'create') {\n const realizeFiles: boolean = args[1] === '--realize-files';\n terminal.writeLine(`Creating links for extraction at path \"${TARGET_ROOT_FOLDER}\"`);\n await removeLinksAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);\n await createLinksAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);\n if (realizeFiles) {\n await realizeFilesAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);\n }\n } else if (args[0] === 'remove') {\n terminal.writeLine(`Removing links for extraction at path \"${TARGET_ROOT_FOLDER}\"`);\n await removeLinksAsync(terminal, TARGET_ROOT_FOLDER, extractorMetadataObject);\n }\n\n terminal.writeLine('The operation completed successfully.');\n return true;\n}\n\nprocess.exitCode = 1;\nconst terminal: Terminal = new Terminal(new ConsoleTerminalProvider());\nrunAsync(terminal)\n .then((result) => {\n process.exitCode = result ? 0 : 1;\n })\n .catch((error) => {\n terminal.writeErrorLine('ERROR: ' + error);\n });\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushstack/package-extractor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "A library for bundling selected files and dependencies into a deployable package.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "dist/package-extractor.d.ts",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"minimatch": "~3.0.3",
|
|
18
18
|
"npm-packlist": "~2.1.2",
|
|
19
19
|
"semver": "~7.5.4",
|
|
20
|
-
"@rushstack/
|
|
21
|
-
"@rushstack/
|
|
20
|
+
"@rushstack/terminal": "0.14.2",
|
|
21
|
+
"@rushstack/node-core-library": "5.9.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/glob": "7.1.1",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"eslint": "~8.57.0",
|
|
28
28
|
"webpack": "~5.82.1",
|
|
29
29
|
"@types/semver": "7.5.0",
|
|
30
|
-
"@rushstack/heft": "0.67.2",
|
|
31
30
|
"local-node-rig": "1.0.0",
|
|
31
|
+
"@rushstack/heft": "0.67.2",
|
|
32
32
|
"@rushstack/webpack-preserve-dynamic-require-plugin": "0.11.66",
|
|
33
|
-
"@rushstack/heft-webpack5-plugin": "0.10.
|
|
33
|
+
"@rushstack/heft-webpack5-plugin": "0.10.12"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "heft build --clean",
|