Giter Site home page Giter Site logo

Comments (17)

bebraw avatar bebraw commented on May 3, 2024

Looks like f4623ba introduced a postinstall script. That in turn invokes a Babel based build. This change was needed by #52. The problem is that if you rely on history through git, it won't contain a correct build (generated by prepublish).

I suppose ideally it shouldn't trigger postinstall if you are treating history as a regular dependency. If it's possible to detect how it was installed (from git or in a normal way), then you can skip Babel build altogether (it will point at lib in this case as it should).

from history.

mjackson avatar mjackson commented on May 3, 2024

Are you installing from a git repo, @bryaneaton13?

from history.

bryaneaton13 avatar bryaneaton13 commented on May 3, 2024

@mjackson I'm using npm to install it. npm i history -D
It works when I already have babel installed locally or globally, but on a fresh project install (no babel installed anywhere) with history as a dependency, I get this error.

from history.

bebraw avatar bebraw commented on May 3, 2024

@mjackson The problem is that postinstall, and hence Babel, gets triggered in a regular install as well for some reason. I can see it has a guard in place

node -e \"require('fs').stat('lib', function (e, s) { process.exit(e || !s.isDirectory() ? 1 : 0) })\"

I suppose the question is why that guard might fail in this case. Why else would it try to trigger Babel unless this check fails?

from history.

bryaneaton13 avatar bryaneaton13 commented on May 3, 2024

I get an error on that line also before I get the babel error message.

image

from history.

bebraw avatar bebraw commented on May 3, 2024

@bryaneaton13 Can you provide more info? Which version of Node are you using? Do you get the same error when running the node -e ... script standalone?

from history.

bryaneaton13 avatar bryaneaton13 commented on May 3, 2024

node -v v0.10.21
npm -v 1.3.11
If I copy and paste that command without || npm run build, it completes.

from history.

taion avatar taion commented on May 3, 2024

@bryaneaton13 Are you running on Windows?

from history.

bryaneaton13 avatar bryaneaton13 commented on May 3, 2024

@taion Yep

from history.

taion avatar taion commented on May 3, 2024

I think that's the issue - I believe you can't do cmd1 || cmd2 on Windows.

from history.

mjackson avatar mjackson commented on May 3, 2024

I guess that means cmd1 && cmd2 won't work on Windows either, which means our npm test script is probably broken as well. Nice debugging, @taion.

Now that we know what the problem is, anyone want to make a PR?

from history.

taion avatar taion commented on May 3, 2024

cmd1 && cmd2 actually does work on Windows. It's just the || that doesn't work. ¯_(ツ)_/¯

from history.

mjackson avatar mjackson commented on May 3, 2024

ok, @bryaneaton13. I think if we use && instead of || your problem should go away. Can you please try installing from the fix-postinstall-windows branch?

npm install rackt/history#fix-postinstall-windows

from history.

taion avatar taion commented on May 3, 2024

I think that might break installing when the built files are present, though, since you'd be exiting with a non-zero status code. Per https://docs.npmjs.com/misc/scripts#best-practices:

Don't exit with a non-zero error code unless you really mean it. Except for uninstall scripts, this will cause the npm action to fail, and potentially be rolled back.

from history.

mjackson avatar mjackson commented on May 3, 2024

Bah, good point. Any ideas? Last time I wrote code for CMD.exe was at least
a decade ago.

On Thu, Oct 8, 2015 at 5:53 PM Jimmy Jia [email protected] wrote:

I think that might break installing when the built files are present,
though, since you'd be exiting with a non-zero status code. Per
https://docs.npmjs.com/misc/scripts#best-practices:

Don't exit with a non-zero error code unless you really mean it. Except
for uninstall scripts, this will cause the npm action to fail, and
potentially be rolled back.


Reply to this email directly or view it on GitHub
#73 (comment).

from history.

taion avatar taion commented on May 3, 2024

I'm not super familiar with child_process, because I don't script in Node, but this seems to work:

-    "postinstall": "node -e \"require('fs').stat('lib', function (e, s) { process.exit(e || !s.isDirectory() ? 1 : 0) })\" || npm run build"
+    "postinstall": "node -e \"require('fs').stat('lib', function (e, s) { if(e || !s.isDirectory()) require('child_process').spawn('npm', ['run', 'build']) })\""

ETA: I mean it works in Bash, and I think it should work on Windows.

from history.

mjackson avatar mjackson commented on May 3, 2024

Ya, I think you're right. Let's try that.

from history.

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.