{"_id":"make","_rev":"11-7f46eed7ef39ed5c2202db45b729a685","name":"make","description":"Make like Task runner","dist-tags":{"meta":"0.0.0","latest":"0.8.1"},"versions":{"0.0.0":{"name":"make","version":"0.0.0","description":"A Make implementation in Node for cross-platform compatibility.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Daniel Chatfield"},"license":"MIT","_id":"make@0.0.0","dist":{"shasum":"2866de361a89b91df97927f446aba6afeb02434c","tarball":"https://registry.npmjs.org/make/-/make-0.0.0.tgz","integrity":"sha512-Vpl+1xUyAtGtrK2HixcjEQB7MIEsGzJbCbkfmmqdQmf9mAaF+sY/uGiOZ1SszBeXRlKJt5GiwhsNVV5KVJf/Ew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGnSlkvrzSEL69H38AQ2mVbdiSAuaDli/WRJeJ4dKYdpAiEA9URrt/sXrL8sOe6TQMLM4OML+ZNVsfFRIxz7k3ZUCIY="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"danielchatfield","email":"chatfielddaniel@gmail.com"},"maintainers":[{"name":"danielchatfield","email":"chatfielddaniel@gmail.com"}]},"0.6.1":{"name":"make","version":"0.6.1","description":"Make like Task runner","main":"index.js","scripts":{"test":"babel lib -d src && mocha -R spec","babel":"babel lib -d src"},"devDependencies":{"babel-cli":"^6.9.0","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-regenerator":"^6.9.0","babel-preset-es2015":"^6.9.0","eslint":"^2.10.2","eslint-config-standard":"^5.3.1","eslint-plugin-promise":"^1.1.0","eslint-plugin-standard":"^1.3.2","mocha":"^2.5.2","standard-version":"^2.2.1","watchd":"github:mklabs/watchd","gentle-cli":"^1.0.3"},"bin":{"make":"bin/make.js","make-init":"bin/make-init.js"},"dependencies":{"chalk":"^1.1.3","debug":"^2.2.0","jsonlint":"^1.6.2","log-symbols":"^1.0.2","minimist":"^1.2.0","npmlog":"^2.0.3","request":"^2.72.0","template-copy":"^1.1.1","unzip":"^0.1.11","which":"^1.2.9"},"repository":{"type":"git","url":"git+https://github.com/mklabs/make.git"},"bugs":{"url":"https://github.com/mklabs/make/issues"},"homepage":"https://github.com/mklabs/make#readme","keywords":["make","build","tool","task","cli","runner"],"gitHead":"9ec476815dbfda75c7fb37d157f127bea3c01020","_id":"make@0.6.1","_shasum":"db72eccd7c3e191ac1844068ba659bd044cd27be","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.0","_npmUser":{"name":"mklabs","email":"daniel.mickael@gmail.com"},"dist":{"shasum":"db72eccd7c3e191ac1844068ba659bd044cd27be","tarball":"https://registry.npmjs.org/make/-/make-0.6.1.tgz","integrity":"sha512-pGvTfFsIlKGsnCSfdexYTlhsF16CIEvhzNFYtVZFnQgPdfE7UsM0B9b6RCKS/bJ2n+AMTte2GhoRJem5Z6dL7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtrEdmZ8ftoGDaIXiJI0CslXbEuvdLQAHA3dHYd9/wWQIgTWEre7dGqv7SlkcGDS6qIBs4UJQ3MpOVBCRHPhmsLbg="}]},"maintainers":[{"name":"danielchatfield","email":"chatfielddaniel@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/make-0.6.1.tgz_1470843475008_0.8983140871860087"}},"0.8.0":{"name":"make","version":"0.8.0","description":"Make like Task runner","main":"index.js","scripts":{"test":"babel lib -d src && mocha -R spec","babel":"babel lib -d src"},"devDependencies":{"babel-cli":"^6.9.0","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-regenerator":"^6.9.0","babel-preset-es2015":"^6.9.0","eslint":"^2.10.2","eslint-config-standard":"^5.3.1","eslint-plugin-promise":"^1.1.0","eslint-plugin-standard":"^1.3.2","mocha":"^2.5.2","standard-version":"^2.2.1","watchd":"github:mklabs/watchd","gentle-cli":"^1.0.3"},"bin":{"make":"bin/make.js","make-init":"bin/make-init.js"},"dependencies":{"chalk":"^1.1.3","debug":"^2.2.0","jsonlint":"^1.6.2","log-symbols":"^1.0.2","minimist":"^1.2.0","npmlog":"^2.0.3","request":"^2.72.0","template-copy":"^1.1.1","unzip":"^0.1.11","which":"^1.2.9"},"repository":{"type":"git","url":"git+https://github.com/mklabs/make.git"},"bugs":{"url":"https://github.com/mklabs/make/issues"},"homepage":"https://github.com/mklabs/make#readme","keywords":["make","build","tool","task","cli","runner"],"gitHead":"af707f5755157509f6140f3572779ede0f004774","_id":"make@0.8.0","_shasum":"a29b0bd3a6d0cfc6889481428f29b537dd0b1bfd","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.0","_npmUser":{"name":"mklabs","email":"daniel.mickael@gmail.com"},"dist":{"shasum":"a29b0bd3a6d0cfc6889481428f29b537dd0b1bfd","tarball":"https://registry.npmjs.org/make/-/make-0.8.0.tgz","integrity":"sha512-Q5MAj32zB0VsKQE/+oQ5+QycMOAogyYhJEKutCUmwkeEYbZKFjoRIB2F0XTGQykGhV2dcjhc2WkvXMA64/9GcQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEtyKTJ8y+i/5PSdM07PNTyK6WA0gmwASxpUWnpTPi6QIhAIuB7OG47+2UssxoDPwgjWfjSLWN1Wjmb+oAJFfZ489J"}]},"maintainers":[{"name":"danielchatfield","email":"chatfielddaniel@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/make-0.8.0.tgz_1470843680396_0.2243549849372357"}},"0.8.1":{"name":"make","version":"0.8.1","description":"Make like Task runner","main":"index.js","scripts":{"test":"babel lib -d src && mocha -R spec","babel":"babel lib -d src"},"devDependencies":{"babel-cli":"^6.9.0","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-transform-regenerator":"^6.9.0","babel-preset-es2015":"^6.9.0","eslint":"^2.10.2","eslint-config-standard":"^5.3.1","eslint-plugin-promise":"^1.1.0","eslint-plugin-standard":"^1.3.2","mocha":"^2.5.2","standard-version":"^2.2.1","watchd":"github:mklabs/watchd","gentle-cli":"^1.0.3"},"bin":{"make":"bin/make.js","make-init":"bin/make-init.js"},"dependencies":{"chalk":"^1.1.3","debug":"^2.2.0","jsonlint":"^1.6.2","log-symbols":"^1.0.2","minimist":"^1.2.0","npmlog":"^2.0.3","request":"^2.72.0","template-copy":"^1.1.1","unzip":"^0.1.11","which":"^1.2.9"},"repository":{"type":"git","url":"git+https://github.com/mklabs/make.git"},"bugs":{"url":"https://github.com/mklabs/make/issues"},"homepage":"https://github.com/mklabs/make#readme","keywords":["make","build","tool","task","cli","runner"],"gitHead":"e7cd0b8339a9138d81f9c8a291a2ef27d8a7c330","_id":"make@0.8.1","_shasum":"6e12d1734f87a5631c408265f99ac129c93f9eb4","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.0","_npmUser":{"name":"mklabs","email":"daniel.mickael@gmail.com"},"dist":{"shasum":"6e12d1734f87a5631c408265f99ac129c93f9eb4","tarball":"https://registry.npmjs.org/make/-/make-0.8.1.tgz","integrity":"sha512-yC+taKbtGBMrkQSBqdWeW4J6rHyUMW10dzI/M1AnmfYx0FEEpj+DOSjSNbmF4sJetab9I0k+P7F/uZSXFskp/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOYIyOTnM+sXzxkp8ZP76VVsyH5jS2aQQQ7mpWIWol/AIhAO/UydPDtsveBiQXCk4KPiEkVGKPECNzT16BFdwRJ5G7"}]},"maintainers":[{"name":"danielchatfield","email":"chatfielddaniel@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/make-0.8.1.tgz_1470851463662_0.34926333255134523"}}},"readme":"# make\r\n\r\n> Make like task runner\r\n\r\n    npm install make -g\r\n\r\n- Windows support \\o/\r\n- Parses Makefile and execute targets\r\n- Borrows heavily from npm in how recipes are executed\r\n- Recipes are executed with `bash -c` instead of executing each rule, line by line like Make does.\r\n- Supports prerequisite (eg. task depending on other tasks)\r\n- Path manipulation to prepend `./node_modules/.bin` making npm installed commands available in Makefiles.\r\n- No need to prefix rules with $@ for silent output\r\n- Slightly easier variables substitution (eg. $VARIABLE instead of $(VARIABLE)\r\n- Variable declarations\r\n- No tab requirements\r\n\r\nNote: This repository is in the process of being renamed into make instead of the former \"bake\" name.\r\n\r\n## What is make.js ?\r\n\r\nmake.js is a little experiment to implement a simple task runner similar to\r\nMake in JavaScript, while bringing in the convenience of npm scripts with\r\n`$PATH` and environment variables.\r\n\r\nIt takes a similar approach to Make with a very close syntax.\r\n\r\nRecipes (or rules, the commands defined for a target / task), are executed with\r\n`sh -c` for unix, `cmd.exe /d /s /c` for windows platform.\r\n\r\nFor now, basic variable and target declarations are supported, along\r\nwith basic prerequisite support (eg. task depending on other tasks).\r\n\r\nThe parser make.js use is small and have its flaws, but for most Makefiles, make.js is\r\nable to parse them correctly. It makes it possible and really easy to use Make on\r\nWindows (tested on Windows 10).\r\n\r\n## The Gist\r\n\r\nGiven the following Makefile\r\n\r\n```make\r\nfoo2:\r\n\techo foo2\r\n\r\nfoo: prefoo\r\n\techo foo\r\n\r\nprefoo:\r\n\techo prefoo\r\n\r\nfoobar: prefoobar\r\n\techo foobar\r\n\r\nprefoobar:\r\n\techo blahblah\r\n\r\nall: foo foo2 foobar\r\n```\r\n\r\nRun make.js\r\n\r\n    $ make\r\n    make info Invoking foo target\r\n    make info Invoking prefoo target\r\n    prefoo\r\n    foo\r\n    make info Invoking foo2 target\r\n    foo2\r\n    make info Invoking foobar target\r\n    make info Invoking prefoobar target\r\n    blahblah\r\n    foobar\r\n    make info ✔ Build sucess in 41ms\r\n\r\n## Usage\r\n\r\n    $ make <target> [options]\r\n\r\n    Options:\r\n      -h, --help         Show this help\r\n      -v, --version      Show package version\r\n      -d, --debug        Enable extended output\r\n\r\n    Targets:\r\n      all                Run target all\r\n      build              Run target build\r\n      foo                Run target foo\r\n      prefoo             Run target prefoo\r\n      foobar             Run target foobar\r\n      prefoobar          Run target prefoobar\r\n\r\n    $ make init <template> [options]\r\n\r\n      default           Scaffold an ES6 setup     (babel, eslint, ...)\r\n      cli               Scaffold an ES6 CLI setup (minimist, ...)\r\n\r\n**todo**\r\n\r\n- Environment variables `make_*` similar to `npm_*` available in npm scirpts\r\n- Variable substitution for prerequities and targets (right now, replacement is done only for rules / recipes)\r\n- Implement [pattern rules](https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html#Pattern-Intro)\r\n- Implement [automatic variables](https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html#Automatic-Variables)\r\n- Implement mtime check (a target needs to be rebuilt if it does not exist of if it's older than any of the prerequities)\r\n\r\n## make init\r\n\r\nBasic scaffolding command\r\n\r\nIts purpose is to init a project Makefile with sensible defaults for various\r\ndevelopment needs.\r\n\r\nThe default list of templates should be configurable. Adding new ones or\r\noverriding existing ones should be a simple process.\r\n\r\nLooking in\r\n\r\n- ~/.config/make/templates\r\n- ~/.make/templates\r\n\r\nWhere the templates directories have the following structure:\r\n\r\n```\r\ntemplates/\r\n  ├── es6\r\n  │   ├── .babelrc\r\n  │   ├── .eslintrc\r\n  │   ├── Makefile\r\n  │   ├── package.json\r\n  │   └── .travis.yml\r\n  └── frontend\r\n      ├── Makefile\r\n      ├── package.json\r\n      └── webpack.config.js\r\n```\r\n\r\n\r\nThe subdirectory name is the template name (invoked with make init <name>).\r\n\r\nIf no name is defined, it defaults to \"default\"\r\n\r\n- `Makefile`     - Is the template Makefile to use\r\n- `package.json` - JSON file to merge with project's package.json (usually to include devDependencies)\r\n- `*.json`       - Every JSON files generated is merged with existing files\r\n  (`.eslintrc` and `.babelrc` are handled as JSON files)\r\n- Every other top level files is copied to destination, existing files are skipped\r\n\r\nThe package.json file can have a \"make\" field (removed when merged with\r\npackage.json), with the following properties:\r\n\r\n- \"scripts\"          - Similar to npm scripts, a list of hooks for make to invoke\r\n- \"scripts.start\"    - Executed when the generation process starts\r\n- \"scripts.install\"  - Executed when the template has been generated\r\n- \"description\"      - Optional description for this template (used on `--help`)\r\n\r\nThese hooks can be used to further customize the template generation (like\r\nrunning `npm install` in \"scripts.install\")\r\n\r\nSee [the default template](./templates/default) package.json file:\r\n\r\n```json\r\n\"make\": {\r\n  \"description\": \"Scaffold a basic ES6 setup\",\r\n  \"scripts\": {\r\n    \"start\": \"echo Starting generation of default template\",\r\n    \"prestart\": \"echo prestart\",\r\n    \"poststart\": \"echo poststart\",\r\n    \"install\": \"npm install --loglevel http --cache-min Infinity\",\r\n    \"preinstall\": \"echo Installing dependencies ...\",\r\n    \"postinstall\": \"npm ls --depth 1\"\r\n  }\r\n}\r\n```\r\n\r\n**Note** `--cache-min Infinity` is used to bypass the HTTP network checks to\r\nthe registry for already installed packages.\r\n\r\n## Makefile\r\n\r\nHere is a quick description of Makefiles syntax, with make differences highlighted.\r\n\r\n### Bash scripting\r\n\r\n```make\r\nhelp:\r\n  echo \"\"\"\r\n    Some help message here:\r\n    Run with make help\r\n  \"\"\"\r\n\r\nall: help\r\n```\r\n\r\nThis, with Make, would throw an error\r\n\r\n    $ make help\r\n    echo \"\"\"\r\n    /bin/sh: 1: Syntax error: Unterminated quoted string\r\n    Makefile:8: recipe for target 'help' failed\r\n    make: *** [help] Error 2\r\n\r\nWhile, make.js is ok with it\r\n\r\n    $ make help\r\n    make info Invoking help target\r\n\r\n    Some help message here\r\n    Run with make help\r\n\r\n    make info ✔ Build sucess in 43ms\r\n\r\n### Make like variables\r\n\r\n```make\r\nsomevar = anything after \"=\" is considered the value till the end of the line\r\nOUT_FLAGS = output.js\r\n\r\nbuild-js:\r\n  cat a.min.js b.min.js > $OUT_FLAGS\r\n  echo JS file built\r\n```\r\n\r\nThe syntax and behavior is a bit different. Instead of using `$(var)` syntax,\r\n`$var` is used instead (that might changed to allow bash variables within\r\nrecipes, which uses this syntax).\r\n\r\n### Task dependencies\r\n\r\nUse prerequities to specify tasks that depends on other tasks.\r\n\r\n**Makefile**\r\n\r\n```\r\nprebuild:\r\n  echo done\r\n\r\nbuild: prebuild\r\n\r\ndeploy: build\r\n```\r\n\r\n**Output**\r\n\r\n    $ make deploy\r\n    make info Invoking deploy target\r\n    make info Invoking build target\r\n    make info Invoking prebuild target\r\n    done\r\n    make info ✔ Build sucess in 50ms\r\n\r\n### npm like environment\r\n\r\nRecipes run in an environment very similar to the environment npm scripts are\r\nrun in, namely the `PATH` environment variable.\r\n\r\n### path\r\n\r\nIf you depend on modules that define executable scripts, like test suites,\r\nthen those executables will be added to the `PATH` for executing the scripts.\r\n\r\nSo, if your package.json has this:\r\n\r\n```json\r\n{\r\n  \"name\" : \"foo\" ,\r\n  \"dependencies\" : { \"bar\" : \"0.1.x\" }\r\n}\r\n```\r\n\r\nthen you could run make to execute a target that uses the `bar` script, which\r\nis exported into the `node_modules/.bin` directory on `npm install`.\r\n\r\n## Tests\r\n\r\n    npm test\r\n","maintainers":[{"name":"danielchatfield","email":"chatfielddaniel@gmail.com"}],"time":{"modified":"2022-06-19T15:31:31.264Z","created":"2013-08-27T13:58:46.527Z","0.0.0":"2013-08-27T13:58:49.651Z","0.6.1":"2016-08-10T15:37:56.915Z","0.8.0":"2016-08-10T15:41:22.545Z","0.8.1":"2016-08-10T17:51:04.418Z"},"users":{"pgilad":true,"vlasterx":true,"petar.rusev":true},"homepage":"https://github.com/mklabs/make#readme","keywords":["make","build","tool","task","cli","runner"],"repository":{"type":"git","url":"git+https://github.com/mklabs/make.git"},"bugs":{"url":"https://github.com/mklabs/make/issues"},"readmeFilename":"readme.md"}