Create a bash script to replace a complex npm script

Elijah Manor
InstructorElijah Manor
Share this video with your friends

Social Share Links

Send Tweet
Published 7 years ago
Updated 5 years ago

In this lesson we will look at pulling out complex npm scripts into their own external bash scripts. This ends up simplifying your package.json file and abstracts the complexity into another file.

[00:01] If your MPM scripts get out of hand, you could always decide to split up your script into external script vowels. For example, we'll convert two sets of our MPM scripts into shell scripts. We'll start with our tests.

[00:14] First, we'll copy our pre-test and test scripts, then, come over and create a new folder called scripts. Inside it, we'll add a file called test.sh. Inside our file, we're going to add a shebang; which is poundbang/user bin env bash, to signify that this is a bash script.

[00:37] We'll paste our script from our package json file and then do a little formatting. We'll save our file and go back to our package json. Here, we could delete our pretest, and inside of our test, we'll change it to say .scripts/test.sh.

[00:55] Before we could actually run our test, what we need to do is go to our scripts folder and change the permissions on that file so that we could execute it. Now, we could come back and run MPMT and it should run our tests.

[01:14] Now, let's convert our build scripts. We'll come down and come over to where the build happens, we'll copy these files. We'll come over and create a file for it called build.sh. Again, we'll need our shebang, poundbang/user bin env bash. We'll paste in our scripts.

[01:36] In this case, we won't need the first one. Remove the keys. Take off the quotes at the end. Save that. Again, we'll have to go to our terminal and change the permissions. If I wanted to change them all recursively, I could say, ch mode -r, for recursive, 777.

[02:07] Before we run our build, let's add some echo statements so we could see what's going on. We'll say echo building, then, we say echo finish building. We'll come to our package json, we'll delete most of the builds.

[02:23] For the main build, we'll say scripts build sh. We'll come to the terminal, now, we could say MPM run build. You'll see at echo it says building, then it actually built the files, and then, it says finished building.

[02:42] If we wanted to continue building the MPM scripts into other shell scripts, we could, but I'll leave that up to your imagination. This ends up being a simple and fine solution if you feel things are getting out of hand with your MPM scripts.

egghead
egghead
~ an hour ago

Member comments are a way for members to communicate, interact, and ask questions about a lesson.

The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io

Be on-Topic

Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.

Avoid meta-discussion

  • This was great!
  • This was horrible!
  • I didn't like this because it didn't match my skill level.
  • +1 It will likely be deleted as spam.

Code Problems?

Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context

Details and Context

Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!

Markdown supported.
Become a member to join the discussionEnroll Today