Skip to content

Instantly share code, notes, and snippets.

@dannycoates
Created January 8, 2015 02:46
Show Gist options
  • Select an option

  • Save dannycoates/318489afd83359501ec6 to your computer and use it in GitHub Desktop.

Select an option

Save dannycoates/318489afd83359501ec6 to your computer and use it in GitHub Desktop.
{
"name": "wat",
"version": "1.0.0",
"dependencies": {
"foo": "git://github.com/dannycoates/poolee.git"
}
}

I want to use require('foo') but I have to require('poolee'). Is there a correct way to alias it in package.json? I don't want to use the git project name as the module name.

marceline:wat dcoates$ npm install
npm WARN package.json wat@1.0.0 No description
npm WARN package.json wat@1.0.0 No repository field.
npm WARN package.json wat@1.0.0 No README data
poolee@0.4.15 node_modules/poolee
└── keep-alive-agent@0.0.1
marceline:wat dcoates$ npm ls
wat@1.0.0 /Users/dcoates/code/wat
├── UNMET DEPENDENCY foo@git://github.com/dannycoates/poolee.git
└── poolee@0.4.15 extraneous (git://github.com/dannycoates/poolee.git#c0f7d2e5e0dc7cd5999331f36b8176a8ac1c5dc0)
npm ERR! missing: foo@git://github.com/dannycoates/poolee.git, required by wat@1.0.0
npm ERR! extraneous: poolee@0.4.15 /Users/dcoates/code/wat/node_modules/poolee
marceline:wat dcoates$ tree
.
├── node_modules
│   └── poolee
│   ├── LICENSE
│   ├── index.js
│   ├── lib
│   │   ├── endpoint.js
│   │   ├── error.js
│   │   ├── pinger.js
│   │   ├── pool.js
│   │   └── request_set.js
│   ├── node_modules
│   │   └── keep-alive-agent
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── index.js
│   │   ├── package.json
│   │   └── test
│   │   └── test.js
│   ├── package.json
│   ├── readme.md
│   └── test
│   ├── endpoint_test.js
│   ├── integration_test.js
│   ├── pool_test.js
│   └── requestset_test.js
└── package.json
marceline:wat dcoates$ node
> require('foo')
Error: Cannot find module 'foo'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at repl:1:2
at REPLServer.self.eval (repl.js:110:21)
at Interface.<anonymous> (repl.js:239:12)
at Interface.emit (events.js:95:17)
at Interface._onLine (readline.js:203:10)
at Interface._line (readline.js:532:8)
> require('poolee')
{ [Function: Pool]
super_: { [Function: EventEmitter] listenerCount: [Function] } }
>
@othiym23

othiym23 commented Jan 8, 2015

Copy link
Copy Markdown

The package manifest determines the name of the installed package, so what you're trying to do won't work, by design. There are a bunch of issues filed on npm that describe why this is the case, but the short answer is that it's safer and less confusing overall.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment