Webpack
下記参考
Svelte
下記参考
babel
preset と plugin をそれぞれインストールして使ってみる。
$ npm install babel-loader --save-dev
$ npm install @babel/preset-env --save-dev
$ npm install @babel/plugin-proposal-private-methods --save-dev
webpack.config.js
関係あるとこのみ抜粋
module.exports = {
...
module: {
rules: [
{
test: /\.js/,
use: [{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-proposal-private-methods']
}
}],
},
],
},
...
}
webpack.config.js 全コード
雑にコピペ。
この記事に関係ない設定とか諸々あるので注意。
const webpack = require('webpack');
const path = require('path')
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const mode = process.env.NODE_ENV || 'development';
const prod = mode === 'production';
module.exports = {
entry: './main.js',
resolve: {
alias: {
svelte: path.dirname(require.resolve('svelte/package.json'))
},
extensions: ['.mjs', '.js', '.svelte'],
mainFields: ['svelte', 'browser', 'module', 'main']
},
output: {
path: path.resolve(__dirname, 'public'),
filename: 'js/bundle.js',
},
module: {
rules: [
{
test: /\.svelte$/,
use: [{
loader: 'svelte-loader',
options: {
preprocess: require('svelte-preprocess')({
scss: true,
}),
compilerOptions: {
dev: !prod,
},
emitCss: prod,
hotReload: !prod,
},
}],
},
{
test: /\.js/,
use: [{
loader: 'babel-loader',
options: {
// presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-proposal-private-methods']
}
}],
},
{
test: /\.scss$/i,
exclude: /node_modules/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
url: false,
},
},
{
loader: 'sass-loader',
options: {},
},
],
},
],
},
plugins: [
new webpack.IgnorePlugin({
resourceRegExp: /^\.\/locale$/,
contextRegExp: /moment$/,
}),
new MiniCssExtractPlugin({
filename: 'css/bundle.css',
}),
],
}