├── .babelrc ├── README.md ├── app.js ├── package.json ├── throwError.js └── webpack.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ "es2015" ] 3 | } 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ``` 2 | npm install 3 | npm start 4 | ``` 5 | 6 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | import throwError from './throwError' 2 | 3 | class Logger { 4 | log(msg) { 5 | console.log('[webpack-node]', msg) 6 | } 7 | } 8 | 9 | const logger = new Logger() 10 | logger.log('hi, from webpack\'d node') 11 | logger.log('I\'m gonna throw an error in 3 seconds...') 12 | setTimeout(() => logger.log('3...'), 1000) 13 | setTimeout(() => logger.log('2...'), 2000) 14 | setTimeout(() => logger.log('wait, like, right on 3 or like, after 3?'), 3000) 15 | setTimeout(() => throwError(), 4000) 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webpack-node", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "start": "webpack && node app.bundle.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "babel": "^6.5.2", 14 | "babel-core": "^6.5.2", 15 | "babel-loader": "^6.2.2", 16 | "babel-preset-es2015": "^6.5.0", 17 | "webpack": "^1.12.13" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /throwError.js: -------------------------------------------------------------------------------- 1 | export default function throwError() { 2 | throw new Error('BOOM! Source maps, line numbers, yay!') 3 | } 4 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack') 2 | var fs = require('fs') 3 | var path = require('path') 4 | 5 | module.exports = { 6 | target: 'node', 7 | 8 | devtool: 'inline-source-map', 9 | 10 | entry: path.join(__dirname, 'app.js'), 11 | 12 | output: { 13 | filename: path.join(__dirname, 'app.bundle.js') 14 | }, 15 | 16 | // keep node_module paths out of the bundle keep size down 17 | externals: getExternals(), 18 | 19 | node: { 20 | __filename: true, 21 | __dirname: true 22 | }, 23 | 24 | module: { 25 | loaders: [ 26 | { test: /\.js$/, loader: 'babel-loader' } 27 | ] 28 | }, 29 | 30 | plugins: [ 31 | new webpack.BannerPlugin( 32 | 'require("source-map-support").install();', 33 | { raw: true, entryOnly: false } 34 | ) 35 | ] 36 | } 37 | 38 | function getExternals() { 39 | const nodeModules = fs.readdirSync(path.resolve(__dirname, 'node_modules')) 40 | return nodeModules.reduce((ext, mod) => { 41 | ext[mod] = 'commonjs ' + mod 42 | return ext 43 | }, {}) 44 | } 45 | 46 | --------------------------------------------------------------------------------