Using an if statement to run a script in Npm

Is there a way to configure an npm run script to use different AWS accounts based on the environment?

{
  "config": {
    "acc": if ({npm_config_env} == "dev") "account1" else "account_2" 
  },
   "scripts":{
     "con": "AWS_DEFAULT_PROFILE=${npm_package_config_acc} aws s3"
   }
}

For example, when running npm run con --env=dev, account1 should be used.

And when running npm run con --env=prod, account2 should be used.

I've searched online but couldn't find any information on whether or not npm run can handle if statements. If anyone knows of a workaround, I would greatly appreciate it!

Answer №1

Since package.json is in JSON format, it does not support if else or any other programming syntax.

An alternative solution for this scenario is to use if else statements from a shell script, as the scripts in package.json are executed in a shell environment.

{
  "scripts": {
    "con": "AWS_DEFAULT_PROFILE=$(if [ $npm_config_env = dev ]; then echo \"account1\"; else echo \"account_2\"; fi) aws s3",
  }
}

The provided script will assign a value to AWS_DEFAULT_PROFILE based on certain conditions.

Important Note: Since these scripts run in a shell, they should be specific to the type of shell being used. The above scripts are designed to work in bash or similar shells.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What is the best approach to unit testing this React Component?

I have created a component that acts as a wrapper for another component. My question is, how should I approach unit testing for this component? Besides checking the state and method calls to ensure they update the state correctly. Other than rendering pro ...

What aspects of MongoDB security am I overlooking?

Is it a secure way to connect to Mongo DB by using Node JS, Mongo DB, and Express? Could someone provide an explanation of this code in terms of security? === Many tutorials often only show... var mongoClient = new MongoClient(new Server('localhos ...

Select component experiencing issue with Material Ui label breaking

I've been working on implementing a select component, which is new to me. However, I'm encountering an issue with my MUI-select component. The label of the select element is no longer syncing properly with the select component itself as shown in ...

The damping effect in three.js OrbitControls only activates when the mouse is pressed, however there is no damping effect once the

I find it difficult to articulate: Currently, I am utilizing OrbitControls in three.js and have activated damping for a smoother rotation with the mouse. It is somewhat effective but not entirely seamless. When I click and drag, the damping feature works ...

How to fetch files using URL in JavaScript

I need a solution for automatically downloading multiple PDF files from Google Drive and Docs using their URLs with JavaScript code. I don't want to manually go to each link to download the files. Although I've researched various answers on Stac ...

How can I utilize Node JS REST API to serve HTML documents?

After successfully creating a REST API in Node JS, I've encountered an obstacle. app.use('/api', router); This particular code ensures that every URL is prefixed with 'api'. However, what should I do if I want to serve an HTML fi ...

"Encountering a puzzling issue with Django Rest Framework where the path setup is functioning for one link but not for

I'm currently attempting to connect to my MySQL database using the Django REST backend. On my frontend, I'm using Vue with Axios. Specifically, I have a junction table called TeacherSubjectJunction, and I want to access it through the following p ...

Utilizing DataTables and Ajax call to refresh table data with Json response

My table is dynamically generated using Thymeleaf and I want to update its contents with jQuery. <table class="table table-hover" id="main-table"> <thead class="thead-inverse"> <tr> <th class="c ...

Bringing in a Vue.js component without relying on npm installation or webpack

I'm currently working on integrating this particular component into my project: https://www.npmjs.com/package/vuejs-auto-complete The issue I've encountered is that the restriction against using npm install has posed a challenge. As our project ...

Iframe overlay feature functioning on Chrome but not on IE11

I have a Document viewer with a .less file containing the following styling: div.document-previewer-container { //height: 400px; //width: 300px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; //padding: 5px 2px; > div.document-preview { h ...

I am having trouble retrieving images on my website and displaying URL images

Every time I attempt to retrieve an image URL from the database for the client, I encounter the following error: Refused to load the image 'https://nuclear-photos.s3-ap-southeast-1.amazonaws.com/…22:33:44%20GMT+0400%20(GST)TEST.png' because i ...

Customized validation message in Angular Formly with live data

I'm currently working with angular-formly and attempting to create a validation that checks if the user input falls within a dynamically set range of two numbers. I thought the simplest way to achieve this was by using a few variables, and while the v ...

Understanding the implementation of options within dataTables that have been initialized with an aaData JavaScript array

When initializing my datatable, I used an aaData object and specific options like so: $('#dataTable').dataTable(dataTableObj, { "bPaginate": false, "bLengthChange": false, "bFilter": true, "bSort": false, "bInfo": false, ...

Uh-oh, gulp is nowhere to be found - It was smooth sailing up until now, and out

A few months back, I was developing web applications using the MEAN stack on a Windows 10 machine. After taking a break from it, I am now trying to dive back in. Previously, I used gulp, browsersync, webpack, and nodemon to automate my server restarting p ...

How can PHP information be transmitted to an Ajax response?

I stumbled upon this script online that I'm currently using to identify a visitor's web browser details. This script is triggered when I make an ajax request. At the end of the PHP script, there is an array, return array( 'userA ...

Tips for saving a document in a table without using the _id field

I want to save the employee object without the _id attribute, just the "employee" attribute as shown below: "employee" :[ { "name" : "leila", "idemployee" : ObjectId("59319505efa50b137477a1f4"), ...

Retrieving display format or formatted value from an object with Moment.js

I am currently working on a project using Angular and Material2. Within this project, I have created a moment object in the following way: myDate = moment.utc(new Date()).format("YYYY-MM-DD HH:mm:ss"); This object is then passed as an argument to ano ...

By using .innerHTML to create an element, the validation of HTML form fields can be circumvented

After inserting a form field with standard HTML validation constraints (pattern & required), using the .innerHTML property does not trigger validation. While I understand the difference between creating an element with .innerHTML and document.createElement ...

AJAX isn't quite cooperating - it seems that only the error callback is getting

Even though I have specified both success and error callbacks, the error callback is being triggered even when the status code is 200. In addition, I am also making a curl call to another php file within registry.php. This is what I have attempted: $.aj ...

How to emphasize a dataset in ChartJS stacked bar chart by hovering over the legend?

My Chart.js displays a horizontal stacked bar chart with legends corresponding to different classes. Here's a snippet (using dummy data, please ignore the random names): https://i.sstatic.net/XNTZZ.png The left labels represent users, while the legen ...