GithubHelp home page GithubHelp logo

Comments (7)

ntwcklng avatar ntwcklng commented on July 26, 2024 1

Okay, defaults to use the .js extension would break a lot of projects.
Whats wrong with npm link and adding the binaries to package.json? Then you can also test your bins with node ./bin/gest-test.js

from args.

mfix22 avatar mfix22 commented on July 26, 2024 1

Actually, I am with you there. Thanks for challenging my point, I agree!

from args.

mfix22 avatar mfix22 commented on July 26, 2024

Here is an example of what I was thinking:

// Generate full name of binary
const bin = module.parent.exports.bin
const full = this.binary + '-' + (Array.isArray(details.usage) ? details.usage[0] : details.usage)
const binFull = path.join(__dirname, bin[full] || `${full}.js`)
...
this.child = spawn(binFull, args, {

from args.

ntwcklng avatar ntwcklng commented on July 26, 2024

I also experimented with this a while ago - my working example was:

const bin = process.mainModule.filename
const subCommand = (Array.isArray(details.usage) ? details.usage[0] : details.usage)
const fullPath = path.join(bin.split(path.sep).slice(0, -1).join(path.sep) + '/' + this.binary + '-' + subCommand)
const ext = path.extname(bin)
let binFull = fullPath

if (ext.length > 0) {
  const withExt = path.basename(bin, ext) + '-' + subCommand + ext
  binFull = path.join(bin.split(path.sep).slice(0, -1).join(path.sep) + '/' + withExt)
}

this.child = spawn(binFull, args, {
...

The problem with that is that you have to chmod +x all binaries while developing. Otherwise you get Error: spawn EACCES.
I think adding the binaries to the package.json and run npm link is the easiest and best solution. See #46

from args.

mfix22 avatar mfix22 commented on July 26, 2024

@ntwcklng I have not had a problem with that since I test my 'binaries' as node ./bin/gest-test.js [options], so I don't run into the EACCES error. I think the solution I posted tackles two issues: 1. it defaults to looking in package.json for the paths to your binaries and 2. defaults to use a .js extension if you don't put them in package.json.

The only two issues I was running into was that the it wasn't finding the file without __dirname and secondly it was looking for a binary without the .js extension (which I would like to keep for syntax highlighting etc.)

from args.

ntwcklng avatar ntwcklng commented on July 26, 2024

We should document this process better

from args.

mfix22 avatar mfix22 commented on July 26, 2024

@ntwcklng yeah it was really just a matter of my understanding how args worked. If anything, documenting better should be a different issue. Closing.

from args.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.