@lerna/publish
Version:
Publish packages in the current project
92 lines (91 loc) • 3.99 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var create_symlink_exports = {};
__export(create_symlink_exports, {
createSymlink: () => createSymlink
});
module.exports = __toCommonJS(create_symlink_exports);
var import_cmd_shim = __toESM(require("cmd-shim"));
var import_fs_extra = __toESM(require("fs-extra"));
var import_npmlog = __toESM(require("npmlog"));
var import_path = __toESM(require("path"));
function createSymlink(src, dest, type) {
import_npmlog.default.silly("createSymlink", [src, dest, type]);
if (src) {
if (process.platform === "win32") {
return createWindowsSymlink(src, dest, type);
}
return createPosixSymlink(src, dest, type);
}
return Promise.resolve();
}
function createSymbolicLink(src, dest, type) {
import_npmlog.default.silly("createSymbolicLink", [src, dest, type]);
return import_fs_extra.default.lstat(dest).then(() => import_fs_extra.default.unlink(dest)).catch(() => {
}).then(() => import_fs_extra.default.symlink(src, dest, type));
}
function createPosixSymlink(src, dest, _type) {
const type = _type === "exec" ? "file" : _type;
const relativeSymlink = import_path.default.relative(import_path.default.dirname(dest), src);
if (_type === "exec") {
return import_fs_extra.default.pathExists(src).then((exists) => {
if (exists) {
return createSymbolicLink(relativeSymlink, dest, type).then(() => import_fs_extra.default.chmod(src, 493));
}
return shShim(src, dest, type).then(() => import_fs_extra.default.chmod(dest, 493));
});
}
return createSymbolicLink(relativeSymlink, dest, type);
}
function createWindowsSymlink(src, dest, type) {
if (type === "exec") {
return import_fs_extra.default.pathExists(src).then((exists) => {
if (exists) {
return (0, import_cmd_shim.default)(src, dest);
}
return import_fs_extra.default.outputFile(src, "").then(() => (0, import_cmd_shim.default)(src, dest)).then(
// fs.remove() never rejects
() => import_fs_extra.default.remove(src),
(err) => import_fs_extra.default.remove(src).then(() => {
throw err;
})
);
});
}
return createSymbolicLink(src, dest, type);
}
function shShim(src, dest, type) {
import_npmlog.default.silly("shShim", [src, dest, type]);
const absTarget = import_path.default.resolve(import_path.default.dirname(dest), src);
const scriptLines = ["#!/bin/sh", `chmod +x ${absTarget} && exec ${absTarget} "$@"`];
return import_fs_extra.default.writeFile(dest, scriptLines.join("\n"));
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createSymlink
});