ness
Version:
✪ No-effort static sites deployed to your AWS account.
111 lines • 12.8 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.detectFramework = exports.match = void 0;
const file = __importStar(require("./file"));
const fs = __importStar(require("fs-extra"));
const path = __importStar(require("path"));
const detectors = [
{
framework: { name: 'gatsby', dist: 'public', build: 'gatsby build' },
requiredFiles: ['package.json', 'gatsby-config.js'],
requiredDependencies: ['gatsby'],
},
{
framework: { name: 'hugo', dist: 'public', build: 'hugo' },
requiredFiles: ['config.toml', 'config.yaml'],
},
{
framework: { name: 'next', dist: '.next', build: 'next build' },
requiredFiles: ['package.json'],
requiredDependencies: ['next'],
},
{
framework: { name: 'nuxt', dist: 'dist', build: 'nuxt' },
requiredFiles: ['package.json'],
requiredDependencies: ['nuxt'],
},
];
async function match(detector, entry = process.cwd()) {
var _a, _b;
const { dependencies, devDependencies } = getPackageJson(entry);
for (const dependency of (_a = detector.requiredDependencies) !== null && _a !== void 0 ? _a : []) {
const inDependencies = dependencies && dependencies[dependency];
const inDevDependencies = devDependencies && devDependencies[dependency];
if (!inDependencies && !inDevDependencies)
return false;
}
for (const filename of (_b = detector.requiredFiles) !== null && _b !== void 0 ? _b : []) {
const fileExists = fs.pathExistsSync(path.resolve(entry, filename));
if (!fileExists)
return false;
}
return true;
}
exports.match = match;
async function getBuildScript(targetValue, entry = process.cwd()) {
const { scripts } = getPackageJson(entry);
if (!scripts)
return undefined;
for (const [key, value] of Object.entries(scripts)) {
if (value.includes(targetValue)) {
const command = await getPackageManager(entry);
return `${command} ${key}`;
}
}
return undefined;
}
let packageManager = {};
let pkg = {};
async function getPackageManager(entry = process.cwd()) {
const existing = packageManager[entry];
if (existing)
return existing;
const yarnLock = await fs.pathExists(path.resolve(entry, 'yarn.lock'));
packageManager[entry] = yarnLock ? 'yarn' : 'npm run';
return packageManager[entry];
}
function getPackageJson(entry = process.cwd()) {
const existing = pkg[entry];
if (existing)
return existing;
pkg[entry] = file.getPackageJson(entry);
return pkg[entry];
}
/**
* Detect the framework this project is based on.
*/
async function detectFramework(entry = process.cwd()) {
for (const detector of detectors) {
if (await match(detector, entry)) {
const { framework } = detector;
// We want the npm/yarn build script
const build = framework.build ? await getBuildScript(framework.build, entry) : undefined;
return {
...framework,
build,
};
}
}
return undefined;
}
exports.detectFramework = detectFramework;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3Jrcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9mcmFtZXdvcmtzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBOEI7QUFDOUIsNkNBQThCO0FBQzlCLDJDQUE0QjtBQVE1QixNQUFNLFNBQVMsR0FBNkI7SUFDMUM7UUFDRSxTQUFTLEVBQUUsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQztRQUNsRSxhQUFhLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7UUFDbkQsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDakM7SUFDRDtRQUNFLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQ3hELGFBQWEsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7S0FDOUM7SUFDRDtRQUNFLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFDO1FBQzdELGFBQWEsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUMvQixvQkFBb0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztLQUMvQjtJQUNEO1FBQ0UsU0FBUyxFQUFFLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUM7UUFDdEQsYUFBYSxFQUFFLENBQUMsY0FBYyxDQUFDO1FBQy9CLG9CQUFvQixFQUFFLENBQUMsTUFBTSxDQUFDO0tBQy9CO0NBQ0YsQ0FBQTtBQUVNLEtBQUssVUFBVSxLQUFLLENBQ3pCLFFBQTJCLEVBQzNCLFFBQWdCLE9BQU8sQ0FBQyxHQUFHLEVBQUU7O0lBRTdCLE1BQU0sRUFB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QyxHQUFHLFFBQVEsQ0FBQTtZQUM1QixvQ0FBb0M7WUFDcEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1lBQ3hGLE9BQU87Z0JBQ0wsR0FBRyxTQUFTO2dCQUNaLEtBQUs7YUFDTixDQUFBO1NBQ0Y7S0FDRjtJQUVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZmlsZSBmcm9tICcuL2ZpbGUnXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSdcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCdcblxuaW50ZXJmYWNlIEZyYW1ld29ya0RldGVjdG9yIHtcbiAgcmVhZG9ubHkgcmVxdWlyZWREZXBlbmRlbmNpZXM/OiBBcnJheTxzdHJpbmc+XG4gIHJlYWRvbmx5IHJlcXVpcmVkRmlsZXM/OiBBcnJheTxzdHJpbmc+XG4gIHJlYWRvbmx5IGZyYW1ld29yazogRnJhbWV3b3JrXG59XG5cbmNvbnN0IGRldGVjdG9yczogQXJyYXk8RnJhbWV3b3JrRGV0ZWN0b3I+ID0gW1xuICB7XG4gICAgZnJhbWV3b3JrOiB7bmFtZTogJ2dhdHNieScsIGRpc3Q6ICdwdWJsaWMnLCBidWlsZDogJ2dhdHNieSBidWlsZCd9LFxuICAgIHJlcXVpcmVkRmlsZXM6IFsncGFja2FnZS5qc29uJywgJ2dhdHNieS1jb25maWcuanMnXSxcbiAgICByZXF1aXJlZERlcGVuZGVuY2llczogWydnYXRzYnknXSxcbiAgfSxcbiAge1xuICAgIGZyYW1ld29yazoge25hbWU6ICdodWdvJywgZGlzdDogJ3B1YmxpYycsIGJ1aWxkOiAnaHVnbyd9LFxuICAgIHJlcXVpcmVkRmlsZXM6IFsnY29uZmlnLnRvbWwnLCAnY29uZmlnLnlhbWwnXSxcbiAgfSxcbiAge1xuICAgIGZyYW1ld29yazoge25hbWU6ICduZXh0JywgZGlzdDogJy5uZXh0JywgYnVpbGQ6ICduZXh0IGJ1aWxkJ30sXG4gICAgcmVxdWlyZWRGaWxlczogWydwYWNrYWdlLmpzb24nXSxcbiAgICByZXF1aXJlZERlcGVuZGVuY2llczogWyduZXh0J10sXG4gIH0sXG4gIHtcbiAgICBmcmFtZXdvcms6IHtuYW1lOiAnbnV4dCcsIGRpc3Q6ICdkaXN0JywgYnVpbGQ6ICdudXh0J30sXG4gICAgcmVxdWlyZWRGaWxlczogWydwYWNrYWdlLmpzb24nXSxcbiAgICByZXF1aXJlZERlcGVuZGVuY2llczogWydudXh0J10sXG4gIH0sXG5dXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYXRjaChcbiAgZGV0ZWN0b3I6IEZyYW1ld29ya0RldGVjdG9yLFxuICBlbnRyeTogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7ZGVwZW5kZW5jaWVzLCBkZXZEZXBlbmRlbmNpZXN9ID0gZ2V0UGFja2FnZUpzb24oZW50cnkpXG4gIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiBkZXRlY3Rvci5yZXF1aXJlZERlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgIGNvbnN0IGluRGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzICYmIGRlcGVuZGVuY2llc1tkZXBlbmRlbmN5XVxuICAgIGNvbnN0IGluRGV2RGVwZW5kZW5jaWVzID0gZGV2RGVwZW5kZW5jaWVzICYmIGRldkRlcGVuZGVuY2llc1tkZXBlbmRlbmN5XVxuICAgIGlmICghaW5EZXBlbmRlbmNpZXMgJiYgIWluRGV2RGVwZW5kZW5jaWVzKSByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZGV0ZWN0b3IucmVxdWlyZWRGaWxlcyA/PyBbXSkge1xuICAgIGNvbnN0IGZpbGVFeGlzdHMgPSBmcy5wYXRoRXhpc3RzU3luYyhwYXRoLnJlc29sdmUoZW50cnksIGZpbGVuYW1lKSlcbiAgICBpZiAoIWZpbGVFeGlzdHMpIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnVpbGRTY3JpcHQoXG4gIHRhcmdldFZhbHVlOiBzdHJpbmcsXG4gIGVudHJ5OiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3Qge3NjcmlwdHN9OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gZ2V0UGFja2FnZUpzb24oZW50cnkpXG4gIGlmICghc2NyaXB0cykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjcmlwdHMpKSB7XG4gICAgaWYgKHZhbHVlLmluY2x1ZGVzKHRhcmdldFZhbHVlKSkge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGF3YWl0IGdldFBhY2thZ2VNYW5hZ2VyKGVudHJ5KVxuICAgICAgcmV0dXJuIGAke2NvbW1hbmR9ICR7a2V5fWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmxldCBwYWNrYWdlTWFuYWdlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG5sZXQgcGtnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFBhY2thZ2VNYW5hZ2VyKGVudHJ5OiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBwYWNrYWdlTWFuYWdlcltlbnRyeV1cbiAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3RpbmdcblxuICBjb25zdCB5YXJuTG9jayA9IGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5yZXNvbHZlKGVudHJ5LCAneWFybi5sb2NrJykpXG4gIHBhY2thZ2VNYW5hZ2VyW2VudHJ5XSA9IHlhcm5Mb2NrID8gJ3lhcm4nIDogJ25wbSBydW4nXG4gIHJldHVybiBwYWNrYWdlTWFuYWdlcltlbnRyeV1cbn1cblxuZnVuY3Rpb24gZ2V0UGFja2FnZUpzb24oZW50cnk6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBhbnkge1xuICBjb25zdCBleGlzdGluZyA9IHBrZ1tlbnRyeV1cbiAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3RpbmdcblxuICBwa2dbZW50cnldID0gZmlsZS5nZXRQYWNrYWdlSnNvbihlbnRyeSlcbiAgcmV0dXJuIHBrZ1tlbnRyeV1cbn1cblxuLyoqXG4gKiBBIHN0YXRpYyBzaXRlIGdlbmVyYXRvciBmcmFtZXdvcmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJhbWV3b3JrIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmcmFtZXdvcmsuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIHB1Ymxpc2ggZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBjb21tYW5kIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHN0YXRpYyBzaXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJ1aWxkIGNvbW1hbmQgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGQ/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBEZXRlY3QgdGhlIGZyYW1ld29yayB0aGlzIHByb2plY3QgaXMgYmFzZWQgb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXRlY3RGcmFtZXdvcmsoXG4gIGVudHJ5OiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogUHJvbWlzZTxGcmFtZXdvcmsgfCB1bmRlZmluZWQ+IHtcbiAgZm9yIChjb25zdCBkZXRlY3RvciBvZiBkZXRlY3RvcnMpIHtcbiAgICBpZiAoYXdhaXQgbWF0Y2goZGV0ZWN0b3IsIGVudHJ5KSkge1xuICAgICAgY29uc3Qge2ZyYW1ld29ya30gPSBkZXRlY3RvclxuICAgICAgLy8gV2Ugd2FudCB0aGUgbnBtL3lhcm4gYnVpbGQgc2NyaXB0XG4gICAgICBjb25zdCBidWlsZCA9IGZyYW1ld29yay5idWlsZCA/IGF3YWl0IGdldEJ1aWxkU2NyaXB0KGZyYW1ld29yay5idWlsZCwgZW50cnkpIDogdW5kZWZpbmVkXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5mcmFtZXdvcmssXG4gICAgICAgIGJ1aWxkLFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdfQ==