@lerna/publish
Version:
Publish packages in the current project
86 lines (85 loc) • 3.61 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 __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 import_devkit = require("@nrwl/devkit");
var import_fs = __toESM(require("fs"));
var import_npmlog = __toESM(require("npmlog"));
var import_path = __toESM(require("path"));
var import_slash = __toESM(require("slash"));
const childProcess = require("@lerna/child-process");
module.exports.gitAdd = gitAdd;
let resolvedPrettier;
function resolvePrettier() {
if (!resolvedPrettier) {
try {
const packageJson = (0, import_devkit.readJsonFile)(import_path.default.join(import_devkit.workspaceRoot, "package.json"));
const hasPrettier = packageJson.devDependencies?.prettier || packageJson.dependencies?.prettier;
if (!hasPrettier) {
return;
}
const prettierPath = import_path.default.join(import_devkit.workspaceRoot, "node_modules", "prettier");
resolvedPrettier = require(prettierPath);
} catch {
return;
}
}
return resolvedPrettier;
}
function maybeFormatFile(filePath) {
const prettier = resolvePrettier();
if (!prettier) {
return;
}
const config = resolvedPrettier.resolveConfig.sync(filePath);
const ignorePath = import_path.default.join(import_devkit.workspaceRoot, ".prettierignore");
const fullFilePath = import_path.default.join(import_devkit.workspaceRoot, filePath);
if (resolvedPrettier.getFileInfo.sync(fullFilePath, { ignorePath }).ignored) {
import_npmlog.default.silly("version", `Skipped applying prettier to ignored file: ${filePath}`);
return;
}
try {
const input = import_fs.default.readFileSync(fullFilePath, "utf8");
import_fs.default.writeFileSync(
fullFilePath,
resolvedPrettier.format(input, { ...config, filepath: fullFilePath }),
"utf8"
);
import_npmlog.default.silly("version", `Successfully applied prettier to updated file: ${filePath}`);
} catch {
import_npmlog.default.silly("version", `Failed to apply prettier to updated file: ${filePath}`);
}
}
function gitAdd(changedFiles, gitOpts, execOpts) {
let files = [];
for (const file of changedFiles) {
const filePath = (0, import_slash.default)(import_path.default.relative(execOpts.cwd, import_path.default.resolve(execOpts.cwd, file)));
maybeFormatFile(filePath);
if (gitOpts.granularPathspec) {
files.push(filePath);
}
}
if (!gitOpts.granularPathspec) {
files = ".";
}
import_npmlog.default.silly("gitAdd", files);
return childProcess.exec("git", ["add", "--", ...files], execOpts);
}