undedoloremque
Version:
Green Field JS SDK
167 lines (163 loc) • 3.81 kB
JavaScript
/* eslint-disable */
const path = require('path');
const webpack = require('webpack');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin');
module.exports = [
// Browser ESM
{
entry: './src/browser/index.js',
output: {
path: path.resolve(__dirname, 'dist/browser/esm'),
filename: 'index.js',
library: {
type: 'commonjs',
},
wasmLoading: 'fetch',
enabledWasmLoadingTypes: ['fetch'],
},
target: 'web',
experiments: {
asyncWebAssembly: true,
},
module: {
rules: [
{
test: /\.wasm$/,
type: 'asset/resource',
generator: {
filename: '[name][ext]',
},
},
],
},
mode: 'development',
resolve: {
extensions: ['.js'],
fallback: {
// buffer: require.resolve("buffer"),
// crypto: require.resolve('crypto-browserify'),
// process: require.resolve('process/browser'),
crypto: false,
fs: false,
util: false,
// util: require.resolve('util/'),
// stream: require.resolve('stream-browserify'),
// path: require.resolve('path-browserify'),
},
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),
new CopyPlugin({
patterns: [
{
from: 'src/browser/worker/wasm_exec-worker.js',
to: 'wasm_exec-worker.js',
},
],
}),
new CleanWebpackPlugin(),
],
},
// Browser UMD
{
entry: './src/browser/index.js',
output: {
path: path.resolve(__dirname, 'dist/browser/umd'),
filename: 'index.js',
library: {
name: 'FileHandle',
type: 'umd',
},
wasmLoading: 'fetch',
enabledWasmLoadingTypes: ['fetch'],
},
target: 'web',
experiments: {
asyncWebAssembly: true,
},
module: {
rules: [
{
test: /\.wasm$/,
type: 'asset/resource',
generator: {
filename: '[name][ext]',
},
},
],
},
mode: 'development',
resolve: {
extensions: ['.js'],
fallback: {
// buffer: require.resolve("buffer"),
// crypto: require.resolve('crypto-browserify'),
// process: require.resolve('process/browser'),
crypto: false,
fs: false,
util: false,
// util: require.resolve('util/'),
// stream: require.resolve('stream-browserify'),
// path: require.resolve('path-browserify'),
},
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),
new CopyPlugin({
patterns: [
{
from: 'src/browser/worker/wasm_exec-worker.js',
to: 'wasm_exec-worker.js',
},
],
}),
new CleanWebpackPlugin(),
],
},
// Node.js
{
entry: './src/node/index.js',
output: {
path: path.resolve(__dirname, 'dist/node'),
filename: 'index.js',
library: {
type: 'commonjs',
},
},
target: 'node',
experiments: {
asyncWebAssembly: true,
},
module: {
rules: [
{
test: /\.wasm$/,
type: 'asset/resource',
generator: {
filename: '[name][ext]',
},
},
],
},
mode: 'development',
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),
new CleanWebpackPlugin(),
new CopyPlugin({
patterns: [
{
from: 'src/wasm/file-handle-worker.wasm',
to: 'file-handle-worker.wasm',
},
],
}),
],
},
];