Node Flashcards
(117 cards)
initialize N project with standard defaults
npm init -y
initialize N project step by step
npm init
install W for a N server
npm i -D webpack webpack-cli _webpack-dev-server
run W in specific mode
webpack –mode=«mode»
» mode: none, developmen, production
name of standard W config file
webpack.config.js
minimum W config
» webpack.config.js: module.exports = { entry: '«entry filename/path»', mode: '«mode»', output: { filename: «output filename», _path: «absolute output path», _publicPath: «relative public path» } }
» !module.exports
» mode: development, production, none
» path: path.resolve(__dirname, ‘«folder»’)
» dev server: needs both output AND public path
use current work directory path in N
import path from ‘path’
path.resolve(__dirname, ‘«relative path»’)
set path for public/asset and output bundle folder in W config
» output: {
publicPath: «path»
}
» path: relative to server root: ‘/«folder»/’
» path: relative to index.html: ‘«folder»/’, ‘../«folder»/’
» from index.html to output script
set serving root of development server in W config
» devServer: {
contentBase: «server root»
}
run W development server
webpack-dev-server
setup loader in W
» npm i -D «_package» «package loader» » module > rules: [{ test: «test regex», use: ['«loader2»', '«loader1»'] }]
» right loader is first
show W dev server error in browser window
» devServer: {
overlay: true
}
setup CSS in W
» npm i -D css-loader style-loader » module > rules: [{ test: /\.css$/, use: ['style-loader', 'css-loader'] }]
setup HTML in W
» npm i -D html-loader extract-loader file-loader » module > rules: [{ test: /\.html$/, use: [ { loader: 'file-loader', options: { name: '[name].html' } }, // resolves import/require 'extract-loader', // resolves urls 'html-loader' // loads raw html ] }]
setup image load in W
» module > rules: [{ test: /\.(jpg|jpeg|png|gif)$/, use: { loader: 'file-loader', options: { name: '«images folder»/[name].[ext]' } } }]
» configured html-loader required
name of Babel configuration file
.babelrc
» is JSON file
setup Babel in W
» npm i -D @babel/core @babel/preset-env babel-loader » module > rules: [{ test: /\.js$/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } }, exclude: /node_modules/ }]
setup minimal Express server in N
import express from ‘express’
const app = express()
app.listen(«port», () => {
console.log(Server is listening on port {«port»}
)
})
setup SASS in W
» npm i -D sass(/node-sass) sass-loader » module > rules: [{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }]
setup TypeScript in W
» npm i -D typescript ts-loader » entry: './src/index.ts' » resolve > extensions: [ _'.tsx', '.ts', '.js' ] » module > rules: [{ test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ }]
setup plugin in W
» npm i -D «plugin» » const «plugin» = require('«plugin»'); » plugins: [ new «plugin»() ]
setup code splitting in W
» optimization > splitChunks: {
chunks: ‘all’,
_minSize: 0
}
» reduces duplicate code and libraries
setup webpack-dev-server with hot reloading in W
» npm i -D webpack-dev-server » const webpack = require('webpack') » devServer: { hot: true } » plugins: [ new webpack.HotModuleReplacementPlugin() ]
setup source mapping to original code for webpack-dev-server
» devtool: ‘(inline-)source-map’
» inline-: works in production