From ad4286bca0d7e1f255bb261b47a116a016ac62cc Mon Sep 17 00:00:00 2001 From: Luke Childs Date: Wed, 19 Jul 2017 09:51:39 +0100 Subject: [PATCH] Initial commit --- .gitignore | 73 +++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 10 +++++++ LICENSE | 21 +++++++++++++ README.md | 19 ++++++++++++ package.json | 40 +++++++++++++++++++++++++ src/index.js | 10 +++++++ test/root-module.js | 5 ++++ 7 files changed, 178 insertions(+) create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 package.json create mode 100644 src/index.js create mode 100644 test/root-module.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cfa6e0e --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +## Node +package-lock.json + +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +## OS X + +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..fa8f913 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +node_js: + - '8' + - '6' + - '4' +script: npm test +after_success: npm run coverage +notifications: + email: + on_success: never diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f27ee9b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Luke Childs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fc318b7 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# root-module + +> Traverses up the directory tree and returns the first module found + +[![Build Status](https://travis-ci.org/lukechilds/root-module.svg?branch=master)](https://travis-ci.org/lukechilds/root-module) +[![Coverage Status](https://coveralls.io/repos/github/lukechilds/root-module/badge.svg?branch=master)](https://coveralls.io/github/lukechilds/root-module?branch=master) +[![npm](https://img.shields.io/npm/v/root-module.svg)](https://www.npmjs.com/package/root-module) + +Inspired by the `createServer()` helper function in the [Got tests](https://github.com/sindresorhus/got/blob/1f1b6ffb6da13f483ef7f6bd92dd33f022e7de47/test/helpers/server.js) + +## Install + +```shell +npm install --save root-module +``` + +## License + +MIT © Luke Childs diff --git a/package.json b/package.json new file mode 100644 index 0000000..16d24b3 --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "root-module", + "version": "0.0.0", + "description": "Traverses up the directory tree and returns the first module found", + "main": "src/index.js", + "scripts": { + "test": "xo && nyc ava", + "coverage": "nyc report --reporter=text-lcov | coveralls" + }, + "xo": { + "extends": "xo-lukechilds" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lukechilds/root-module.git" + }, + "keywords": [ + "find", + "require", + "root", + "current", + "module" + ], + "author": "Luke Childs (http://lukechilds.co.uk)", + "license": "MIT", + "bugs": { + "url": "https://github.com/lukechilds/root-module/issues" + }, + "homepage": "https://github.com/lukechilds/root-module", + "dependencies": { + "find-root": "^1.1.0" + }, + "devDependencies": { + "ava": "^0.19.1", + "coveralls": "^2.13.1", + "eslint-config-xo-lukechilds": "^1.0.0", + "nyc": "^10.3.2", + "xo": "^0.19.0" + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..3bfd1f0 --- /dev/null +++ b/src/index.js @@ -0,0 +1,10 @@ +'use strict'; + +const findRoot = require('find-root'); + +try { + const modulePath = findRoot(process.cwd()); + module.exports = require(modulePath); +} catch (err) { + module.exports = false; +} diff --git a/test/root-module.js b/test/root-module.js new file mode 100644 index 0000000..047543a --- /dev/null +++ b/test/root-module.js @@ -0,0 +1,5 @@ +import test from 'ava'; + +test(`importing doesn't throw`, t => { + t.notThrows(() => require('../')); +});