119 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| const DEBUG = process.env.NODE_ENV !== 'production'
 | |
| const entry = ['./src/app.js']
 | |
| const path = require('path')
 | |
| const pkg = require('./package.json')
 | |
| const webpack = require('webpack')
 | |
| 
 | |
| module.exports = {
 | |
|     context: path.join(__dirname, './'),
 | |
|     devtool: DEBUG ? 'inline-source-map' : false,
 | |
|     entry: entry,
 | |
|     mode: DEBUG ? 'development' : 'production',
 | |
|     target: 'web',
 | |
| 
 | |
|     node: {
 | |
|         fs: 'empty'
 | |
|     },
 | |
| 
 | |
|     externals: {
 | |
|         '$': '$',
 | |
|         'jquery': 'jQuery',
 | |
|     },
 | |
| 
 | |
|     output: {
 | |
|     // filename: DEBUG ? 'app.js' : 'app-[hash].js'
 | |
|         filename: 'app.js',
 | |
|         library: 'App',
 | |
|         path: path.resolve(pkg.config.buildDir),
 | |
|         publicPath: DEBUG ? '/' : './',
 | |
|     },
 | |
| 
 | |
|     plugins: [
 | |
|         new webpack.optimize.OccurrenceOrderPlugin(),
 | |
|         new webpack.HotModuleReplacementPlugin(),
 | |
| 
 | |
|         new webpack.LoaderOptionsPlugin({
 | |
|             debug: DEBUG,
 | |
|         }),
 | |
| 
 | |
|         // Print on rebuild when watching; see
 | |
|         // https://github.com/webpack/webpack/issues/1499#issuecomment-155064216
 | |
|         function () {
 | |
|             this.plugin('watch-run', (watching, callback) => {
 | |
|                 console.log('Begin compile at ' + new Date())
 | |
|                 callback()
 | |
|             })
 | |
|         },
 | |
| 
 | |
|     ],
 | |
| 
 | |
|     module: {
 | |
| 
 | |
|         rules: [
 | |
| 
 | |
|             {
 | |
|                 test: /\.tag\.pug$/,
 | |
|                 loader: 'riot-tag-loader',
 | |
|                 exclude: /node_modules/,
 | |
|                 query: {
 | |
|                     hot: true,
 | |
|                     template: 'pug',
 | |
|                     type: 'es6',
 | |
|                 },
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.tag$/,
 | |
|                 loader: 'riot-tag-loader',
 | |
|                 exclude: /node_modules/,
 | |
|                 query: {
 | |
|                     hot: false,
 | |
|                     type: 'es6',
 | |
|                 },
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.js$/,
 | |
|                 loader: 'babel-loader',
 | |
|                 exclude: /node_modules/,
 | |
|                 query: {
 | |
|                     plugins: ['@babel/transform-runtime'],
 | |
|                     presets: ['@babel/preset-env'],
 | |
|                 },
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.html$/,
 | |
|                 loader: 'file-loader?name=[path][name].[ext]',
 | |
|                 exclude: /node_modules/,
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.jpe?g$|\.svg$|\.png$/,
 | |
|                 loader: 'file-loader?name=[path][name].[ext]',
 | |
|                 exclude: /node_modules/,
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.json$/,
 | |
|                 loader: 'json',
 | |
|                 exclude: /node_modules/,
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.(otf|eot|svg|ttf|woff|woff2)(\?v=\d+\.\d+\.\d+)?$/,
 | |
|                 loader: 'url?limit=8192&mimetype=application/font-woff',
 | |
|             },
 | |
| 
 | |
|             {
 | |
|                 test: /\.json$/,
 | |
|                 loader: 'json',
 | |
|                 include: path.join(__dirname, 'node_modules', 'pixi.js'),
 | |
|             },
 | |
| 
 | |
|         ],
 | |
| 
 | |
|     },
 | |
| 
 | |
| }
 |