| const autoprefixer = require('autoprefixer') |
| const prefixer = require('postcss-prefixer') |
| const clean = require('postcss-clean') |
| const webpack = require('webpack') |
| const pkg = require('../package.json') |
| const path = require('path') |
| const ESLintPlugin = require('eslint-webpack-plugin') |
|
|
| process.traceDeprecation = true |
|
|
| const banner = pkg.name + ' v' + pkg.version + ' ' + pkg.homepage |
|
|
| const postcssLoader = { |
| loader: 'postcss-loader', |
| options: { |
| plugins: [ |
| prefixer({ |
| prefix: '_', |
| ignore: [/luna-*/], |
| }), |
| autoprefixer, |
| clean(), |
| ], |
| }, |
| } |
|
|
| const rawLoader = { |
| loader: 'raw-loader', |
| options: { |
| esModule: false, |
| }, |
| } |
|
|
| module.exports = { |
| entry: './src/index', |
| resolve: { |
| symlinks: false, |
| alias: { |
| axios: path.resolve(__dirname, '../src/lib/empty.js'), |
| micromark: path.resolve(__dirname, '../src/lib/micromark.js'), |
| }, |
| }, |
| devServer: { |
| static: { |
| directory: path.join(__dirname, '../test'), |
| }, |
| port: 8080, |
| }, |
| output: { |
| path: path.resolve(__dirname, '../dist'), |
| publicPath: '/assets/', |
| library: 'eruda', |
| libraryTarget: 'umd', |
| }, |
| module: { |
| rules: [ |
| { |
| test: /\.js$/, |
| include: [ |
| path.resolve(__dirname, '../src'), |
| path.resolve(__dirname, '../node_modules/luna-console'), |
| path.resolve(__dirname, '../node_modules/luna-modal'), |
| path.resolve(__dirname, '../node_modules/luna-tab'), |
| path.resolve(__dirname, '../node_modules/luna-data-grid'), |
| path.resolve(__dirname, '../node_modules/luna-object-viewer'), |
| path.resolve(__dirname, '../node_modules/luna-dom-viewer'), |
| path.resolve(__dirname, '../node_modules/luna-text-viewer'), |
| path.resolve(__dirname, '../node_modules/luna-setting'), |
| path.resolve(__dirname, '../node_modules/luna-box-model'), |
| path.resolve(__dirname, '../node_modules/luna-notification'), |
| ], |
| use: [ |
| { |
| loader: 'babel-loader', |
| options: { |
| sourceType: 'unambiguous', |
| presets: ['@babel/preset-env'], |
| plugins: [ |
| '@babel/plugin-transform-runtime', |
| '@babel/plugin-proposal-class-properties', |
| ], |
| }, |
| }, |
| ], |
| }, |
| { |
| test: /\.scss$/, |
| use: [ |
| 'css-loader', |
| postcssLoader, |
| { loader: 'sass-loader', options: { api: 'modern' } }, |
| ], |
| }, |
| { |
| test: /\.css$/, |
| exclude: /luna-dom-highlighter/, |
| use: ['css-loader', postcssLoader], |
| }, |
| { |
| test: /luna-dom-highlighter\.css$/, |
| use: [rawLoader], |
| }, |
| ], |
| }, |
| plugins: [ |
| new webpack.BannerPlugin(banner), |
| new webpack.DefinePlugin({ |
| VERSION: '"' + pkg.version + '"', |
| }), |
| new ESLintPlugin({ |
| cache: false, |
| }), |
|
|
| ], |
| } |
|
|