amis2/packages/amis-editor/webpack.config.js
jiatianqi ec4e7d9988 amis-saas-6892 merge pre-release分支,解决common.ts一个文件冲突
Change-Id: I24f9841fbe5b07bdf463945245049a74248c2ef1
2022-11-16 11:22:25 +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')]
})
]
};