opal-components
Version:
[Rionite](https://github.com/Riim/Rionite) component set.
154 lines (141 loc) • 3.34 kB
JavaScript
const path = require('path');
const webpack = require('webpack');
const postcssCSSVariables = require('postcss-css-variables');
const postcssRioniteComponent = require('@riim/postcss-rionite-component');
const postcssNested = require('postcss-nested');
const postcssColorFunction = require('postcss-color-function');
const autoprefixer = require('autoprefixer');
const csso = require('postcss-csso');
module.exports = env => {
if (!env) {
env = {};
}
let plugins = [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
];
return {
mode: 'none',
entry: {
OpalComponents: './src/index.ts'
},
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js',
library: '[name]',
libraryTarget: 'umd'
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /(?:node_modules|bower_components)/,
enforce: 'pre',
loader: 'tslint-loader'
},
{
test: /\.ts$/,
exclude: /(?:node_modules|bower_components)/,
loader: 'awesome-typescript-loader'
},
{
test: /\.nelm$/,
loader: ['raw-loader', 'trim-lines-loader', 'collapse-line-breaks-loader']
},
{
test: /\.css$/,
loader: [
'simple-css-loader',
{
loader: 'postcss-loader',
options: {
plugins: [
postcssCSSVariables(),
postcssRioniteComponent(),
postcssNested(),
postcssColorFunction(),
autoprefixer({ browsers: ['last 3 versions'] }),
csso({ restructure: false })
]
}
}
]
},
{
test: /\.svg$/,
loader: 'simple-svg-loader'
}
]
},
resolve: {
extensions: ['.ts', '.js']
},
context: __dirname,
externals: [
'@riim/debounce-throttle',
'@riim/gettext',
'@riim/kebab-case',
'@riim/map-set-polyfill',
'@riim/next-tick',
'@riim/next-uid',
'@riim/object-assign-polyfill',
'@riim/platform',
'@riim/rionite-snake-case-attribute-name',
'cellx',
'cellx-decorators',
'date-exists',
'history',
'history/createBrowserHistory',
'reflect-metadata',
'rionite',
'@riim/opal-autosuggest',
'@riim/opal-button',
'@riim/opal-calendar',
'@riim/opal-checkbox',
'@riim/opal-date-input',
'@riim/opal-dropdown',
'@riim/opal-editable-text',
'@riim/opal-filtered-list',
'@riim/opal-focus-highlight-controller',
'@riim/opal-group',
'@riim/opal-icon',
'@riim/opal-input-mask',
'@riim/opal-input-validator',
'@riim/opal-loaded-list',
'@riim/opal-loader',
'@riim/opal-modal',
'@riim/opal-multirow',
'@riim/opal-multiselect',
'@riim/opal-notification',
'@riim/opal-popover',
'@riim/opal-radio-group',
'@riim/opal-router',
'@riim/opal-select',
'@riim/opal-select-validator',
'@riim/opal-sign-button',
'@riim/opal-slider',
'@riim/opal-switch',
'@riim/opal-switch-menu',
'@riim/opal-tabs',
'@riim/opal-tag-select',
'@riim/opal-text-input',
'@riim/opal-text-input-validator',
'@riim/opal-tree-list',
'@riim/opal-tree-select',
'@riim/opal-tree-tag-select',
'@riim/opal-utils'
],
plugins,
watch: env.dev,
node: {
console: false,
global: false,
process: false,
__filename: false,
__dirname: false,
Buffer: false,
setImmediate: false
}
};
};