UNPKG

netlify-cli

Version:

Netlify command line tool

65 lines (50 loc) 2.09 kB
## writing a detector - write as many checks as possible to fit your project - return false if its not your project - if it definitely is, return an object with this shape: ```ts { framework: String, // e.g. gatsby, vue-cli command: String, // e.g. yarn, npm frameworkPort: Number, // e.g. 3000 env: Object, // env variables, see examples possibleArgsArrs: [[String]], // e.g [['run develop]], so that the combined command is 'npm run develop', but we allow for multiple dist: String, // static folder where a _redirect file would be placed, e.g. 'public' or 'static'. NOT the build output folder } ``` ## things to note - Dev block overrides will supercede anything you write in your detector: https://github.com/netlify/cli/blob/master/docs/netlify-dev.md#project-detection - detectors are language agnostic. don't assume npm or yarn. - if default args (like 'develop') are missing, that means the user has configured it, best to tell them to use the -c flag. ## detector notes - metalsmith is popular but has no dev story so we have skipped it - hub press doesnt even have cli https://github.com/HubPress/hubpress.io#what-is-hubpress - gitbook: not sure if we want to support gitbook yet requires a global install: https://github.com/GitbookIO/gitbook/blob/master/docs/setup.md ```js const { hasRequiredDeps, hasRequiredFiles, getYarnOrNPMCommand, scanScripts } = require('./utils/jsdetect') const FRAMEWORK_PORT = 4000 module.exports = function detector() { // REQUIRED FILES if (!hasRequiredFiles(['README.md', 'SUMMARY.md'])) return false // // REQUIRED DEPS // if (!hasRequiredDeps(["hexo"])) return false; /** everything below now assumes that we are within gatsby */ const possibleArgsArrs = [['gitbook', 'serve']] // scanScripts({ // preferredScriptsArr: ["start", "dev", "develop"], // preferredCommand: "hexo server" // }); return { framework: 'gitbook', command: getYarnOrNPMCommand(), frameworkPort: FRAMEWORK_PORT, env: { NAME: 'value' }, possibleArgsArrs, dist: 'public', } } ```