amis2/packages/amis-editor/webpack.config.js
wibetter 8177458d9f feat(layout): 特殊布局元素增加拖拽位置能力
Change-Id: I8206d95a1fd5c5c7cb871ff44d64833d28d6eb22
2022-07-07 14:16:06 +08:00

102 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file webpack 配置文件。
*/
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const nodeExternals = require('webpack-node-externals');
const path = require('path');
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
mode: 'production', // development production
entry: {
index: ['./src/index.tsx'],
},
output: {
path: path.join(__dirname, 'lib'),
filename: '[name].min.js',
libraryTarget: 'commonjs'
},
resolve: {
extensions: ['.ts', '.tsx', '.js']
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
options: {
compilerOptions: {
declaration: true,
outDir: './lib'
}
}
},
{
test: /\.scss$/i,
use: [
MiniCssExtractPlugin.loader,
// Creates `style` nodes from JS strings
// 'style-loader',
// Translates CSS into CommonJS
'css-loader',
// Compiles Sass to CSS
{
loader: 'sass-loader',
options: {
implementation: require('sass'), // `dart-sass` 是首选
// webpackImporter: true, // 开启 / 关闭默认的 Webpack importer。默认为true所以不需要额外配置这个
sassOptions: {
// 正常情况下不需要这个配置项但有些情况下需要比如导入的sass文件包含 media queries等
includePaths: ['node_modules', '../../node_modules'],
},
},
}
]
},
{
test: /\.css$/i,
use: [
MiniCssExtractPlugin.loader,
// Creates `style` nodes from JS strings
// 'style-loader',
// Translates CSS into CommonJS
'css-loader'
]
},
{
test: /\.svg$/,
issuer: /\.[jt]sx?$/,
use: ['@svgr/webpack']
}
]
},
plugins: [
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: '[name].css',
chunkFilename: '[id].css'
}),
// new BundleAnalyzerPlugin(),
{
apply(compiler) {
compiler.hooks.shouldEmit.tap(
'Remove styles from output',
compilation => {
delete compilation.assets['style.min.js']; // Remove asset. Name of file depends of your entries and
return true;
}
);
}
}
],
externals: [
nodeExternals({
importType: 'commonjs',
allowlist: [/^amis\/schemas/],
additionalModuleDirs: [path.resolve(__dirname, '../../node_modules')]
})
]
};