Setup Node.js using latest features for development and production

i am building a node.js api. I want to use some latest ecmascript features. But during production i need a built/dist version that will run on the lts node version.

Problems:

  1. I have setup webpack and babel for this but im not sure if im duplicating stuff by having webpack & babel in seperate configuration files.

  2. My goal is to have a setup that builds on changes and the node server restarts on changes. This does not need to be the case for production i just need a built version. Do i need seperate webconfigs for this? Right now i have a webpack plugin that after build it runs nodemon this works well for dev but dont need for production.

  3. Trying to debug errors using my setup is difficult i believe the sourcemaps are not setup properly. So the errors always point to dist/index.js which is a long file of compiled code.

package.json

{     "name": "backend-blue",     "version": "1.0.0",     "description": "",     "main": "index.js",     "scripts": {         "serve": "webpack --watch",         "build": "webpack",         "quality": "./node_modules/.bin/eslint src/",         "test": "nyc mocha --timeout 5000 test/**/*.test.js --exit"     },     "nyc": {         "require": [             "@babel/register"         ],         "reporter": [             "lcov",             "text"         ],         "sourceMap": false,         "instrument": false     },     "repository": {         "type": "git",         "url": ""     },     "author": "",     "license": "ISC",     "dependencies": {         "cors": "^2.8.5",         "dotenv": "^6.2.0",         "express": "^4.16.4",         "express-validator": "^5.3.1",         "mongoose": "^5.4.15",         "morgan": "^1.9.1",         "passport": "^0.4.0",         "passport-jwt": "^4.0.0",         "response-time": "^2.3.2",         "uuid": "^3.3.2",         "winston": "^3.2.1"     },     "devDependencies": {         "@babel/cli": "^7.2.3",         "@babel/core": "^7.3.3",         "@babel/plugin-proposal-class-properties": "^7.3.3",         "@babel/plugin-transform-runtime": "^7.2.0",         "@babel/preset-env": "^7.3.1",         "@babel/register": "^7.0.0",         "@babel/runtime": "^7.3.1",         "babel-eslint": "^10.0.1",         "babel-loader": "^8.0.5",         "babel-plugin-istanbul": "^5.1.1",         "babel-plugin-transform-regenerator": "^6.26.0",         "babel-polyfill": "^6.26.0",         "chai": "^4.2.0",         "clean-webpack-plugin": "^1.0.1",         "cross-env": "^5.2.0",         "eslint": "^5.14.1",         "eslint-config-google": "^0.12.0",         "eslint-loader": "^2.1.2",         "eslint-plugin-react": "^7.12.4",         "mocha": "^6.0.1",         "nyc": "^13.3.0",         "supertest": "^3.4.2",         "webpack": "^4.29.5",         "webpack-cli": "^3.2.3",         "webpack-node-externals": "^1.7.2",         "webpack-shell-plugin": "^0.5.0"     } } 

webpack.config.js

const path = require("path"); const WebpackShellPlugin = require("webpack-shell-plugin"); const nodeExternals = require("webpack-node-externals"); const CleanWebpackPlugin = require("clean-webpack-plugin");  module.exports = [     {         mode: "development",         entry: ["babel-polyfill", "./src/index.js"],         target: "node",         externals: [nodeExternals()], // in order to ignore all modules in node_modules folder         stats: {             colors: true         },         devtool: "source-map",          output: {             path: path.resolve(__dirname, "dist"),             filename: "index.js",             sourceMapFilename: "index.js.map"         },         module: {             rules: [                 {                     enforce: "pre",                     test: /\.js$  /,                     exclude: /node_modules/,                     loader: "eslint-loader",                 },                 {                     test: /\.m?js$  /,                     exclude: /(node_modules|bower_components)/,                     use: {                         loader: "babel-loader",                         options: {                             presets: ["@babel/preset-env", {                                 plugins: ["@babel/plugin-proposal-class-properties"]                             }]                         }                     }                 }             ],         },         node: {             __dirname: false,             __filename: false,         },          "plugins": [             new CleanWebpackPlugin(),             new WebpackShellPlugin({                 onBuildStart: [],                 onBuildEnd: ["nodemon dist/index.js"]             }),             // new CopyWebpackPlugin([{             //     from: 'src/public/',             //     to: 'public/'             // }]),         ]      }, ]; 

.babelrc

{     "presets": [       "@babel/preset-env"     ],     "env": {       "test": {         "plugins": [           "istanbul"         ]       }     },     "plugins": [         "@babel/transform-runtime", "@babel/plugin-proposal-class-properties"     ] } 

I am trying to achieve a node setup that allows me to use the latest ecmascript features, make code changes that automatically rebuild the project and restart server aswell as being able to debug errors. Finally being able to seperate development from production.

Looking for someone for multiple WordPress site development jobs

We use Beaver Builder Agency + Beaver Builder PowerPack and a few other premium plugins, so we will want the work done through these plugins for organisation and easy editing. You must be creative, but still have strong skills in CSS and JavaScript.

Payment will be per website completed by PayPal.

Please send PM me with Google Hangouts name/email and example WordPress sites you have completed in the past.

Thanks!

[Download] Growth Hacking, Business Development: Marketing Fundamentals With John Colley

[Download] Growth Hacking, Business Development: Marketing Fundamentals With John Colley

Scale Your Business With Growth Hacking Marketing Techniques, Digital Marketing Strategy, Convert Traffic Into Sales
xplode Your Business With These Business and Marketing Fundamentals!

Note: This course includes straight forward techniques and marketing tips to explode your business and develop a powerful growth strategy. This requires practice and motivated people to put in the…

[Download] Growth Hacking, Business Development: Marketing Fundamentals With John Colley

[Download] Packt Hands-on Web Application Development with jQuery

[Download] Packt Hands-on Web Application Development with jQuery
Want to build outstanding visual and interactive web applications by adding amazing javascript functionality with ease? jQuery, a fast, extensible, and feature-rich javascript library, will come to your rescue. It is easy to get started with and helps you build complex scripting functionality in just a few lines of code

https://drive.google.com/drive/u/1/folders/1Blp_P4pJTCjHNfeAaw74JK5A04DzEPkr

Professional Website development and design for $50

Sir we are a team and having experience of six years and expects in website development and design and hope me my work is fully satisfied trust me sir thank youSir we are a team and having experience of six years and expects in website development and design and hope me my work is fully satisfied trust me sir thank you

by: Narahari66
Created: —
Category: Programming
Viewed: 165


Professional Website development and design for $50

Sir we are a team and having experience of six years and expects in website development and design and hope me my work is fully satisfied trust me sir thank youSir we are a team and having experience of six years and expects in website development and design and hope me my work is fully satisfied trust me sir thank you

by: Narahari66
Created: —
Category: Programming
Viewed: 146


Professional Android development and design for $60

Sir we are a team and having experience of six years and expects in Android development and design and hope me my work is fully satisfied trust me sir thank youSir we are a team and having experience of six years and expects in website development and design and hope me my work is fully satisfied trust me sir thank you

by: Narahari66
Created: —
Category: Programming
Viewed: 135


How do you use production metrics to aid your day-to-day software development?

If you’ve ever used/heard of Application Performance Monitoring tools such as New Relic or ELK stack, you’ll know that they provide you with the following features:

  • Various production metrics on a deployed application, and hooks into most languages to collect said metrics
  • Per-function and sometimes per-line profiling data (also hooks into web frameworks like Flask to give you stats for each of your API endpoints)
  • Tracking of exceptions and error rates

However, these APM tools are largely targeted at operations/sysadmin people. There is arguably a huge amount of very useful data in there, which could aid you in your day-to-day development work. Imagine:

  1. Writing some code
  2. Deploying that code
  3. Knowing immediately on a line-by-line basis, where your performance bottlenecks are
  4. Seeing some exceptions unfold in your IDE, in real-time
  5. Playing back through particular events which occurred on live production servers in order to debug production issues locally, while having access to the exact inputs which were used
  6. Having your IDE infer the complexity of your functions based on live production data
  7. Having all of your production metrics be version-control-aware straight out-of-the-box, such that you could do all of the above with respect to any deployed revision
  8. ???

In his paper “Developer Targeted Analytics: Supporting Software Development Decisions with Runtime Information“, Jürgen Cito writes:

  • Runtime information delivered in the form of centralized and external dashboards are not actionable for software developers
  • When solving problems that have occurred at runtime, developers rather rely on beliefs and intuition than utilize metrics
  • Data combinatorics in production environments are so different to what profilers and tests can simulate either locally or in staging environments

All of which are very sensible observations – or are they? This is where I need your help.

I am using his work as a basis for developing my own solution to this problem, and I thought I would reach out to some real developers, in order to help me:

  1. Evaluate the importance/need/impact of a solution to this problem
  2. Draw some inspiration from software developers much more experienced than myself
  3. Gather real opinions on how to improve the development process as a whole, and lead to quicker turnaround times and higher quality code

I have a good set of initial ideas as to where I’d like to take this. A lot of the work will involve writing a very intuitive plugin for IntelliJ in order to make this kind of information actionable, and hopefully aid in the daily decision making process of developers.

So, with all of the above in mind, I’d like to ask the community here:

  1. What are your general thoughts on all of the above?
  2. What kinds of features do you wish your IDE had in order to make use of production metrics data?
  3. Do you know/use any other tools which tried to achieve the same thing? How did you find that experience?

Many thanks.