esbuild is way faster
This commit is contained in:
parent
9389039c7a
commit
d6cbf4260a
35
esbuild.config.mjs
Normal file
35
esbuild.config.mjs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import esbuild from "esbuild";
|
||||||
|
import process from "process";
|
||||||
|
// import builtins from 'builtin-modules'
|
||||||
|
|
||||||
|
const banner = `/*
|
||||||
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||||
|
if you want to view the source, please visit the github repository of this plugin
|
||||||
|
*/
|
||||||
|
`;
|
||||||
|
|
||||||
|
const prod = process.argv[2] === "production";
|
||||||
|
|
||||||
|
esbuild
|
||||||
|
.build({
|
||||||
|
banner: {
|
||||||
|
js: banner,
|
||||||
|
},
|
||||||
|
entryPoints: ["./src/main.ts"],
|
||||||
|
bundle: true,
|
||||||
|
external: [
|
||||||
|
"obsidian",
|
||||||
|
"electron",
|
||||||
|
"fs",
|
||||||
|
// ...builtins
|
||||||
|
],
|
||||||
|
format: "cjs",
|
||||||
|
watch: !prod,
|
||||||
|
target: "es2016",
|
||||||
|
logLevel: "info",
|
||||||
|
sourcemap: prod ? false : "inline",
|
||||||
|
treeShaking: true,
|
||||||
|
minify: prod,
|
||||||
|
outfile: "main.js",
|
||||||
|
})
|
||||||
|
.catch(() => process.exit(1));
|
||||||
16
package.json
16
package.json
@ -3,12 +3,17 @@
|
|||||||
"version": "0.1.6",
|
"version": "0.1.6",
|
||||||
"description": "This is yet another sync plugin for Obsidian app.",
|
"description": "This is yet another sync plugin for Obsidian app.",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "webpack --mode development --watch",
|
"dev": "node esbuild.config.mjs",
|
||||||
"build": "webpack --mode production",
|
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
|
||||||
"format": "npx prettier --write .",
|
"format": "npx prettier --write .",
|
||||||
"clean": "npx rimraf main.js",
|
"clean": "npx rimraf main.js",
|
||||||
"test": "cross-env TS_NODE_COMPILER_OPTIONS={\\\"module\\\":\\\"commonjs\\\"} mocha -r ts-node/register 'tests/**/*.ts'"
|
"test": "cross-env TS_NODE_COMPILER_OPTIONS={\\\"module\\\":\\\"commonjs\\\"} mocha -r ts-node/register 'tests/**/*.ts'"
|
||||||
},
|
},
|
||||||
|
"browser": {
|
||||||
|
"path": "path-browserify",
|
||||||
|
"process": "process/browser",
|
||||||
|
"stream": "stream-browserify"
|
||||||
|
},
|
||||||
"source": "main.ts",
|
"source": "main.ts",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
@ -19,19 +24,18 @@
|
|||||||
"@types/mime-types": "^2.1.1",
|
"@types/mime-types": "^2.1.1",
|
||||||
"@types/mocha": "^9.0.0",
|
"@types/mocha": "^9.0.0",
|
||||||
"@types/node": "^14.14.37",
|
"@types/node": "^14.14.37",
|
||||||
|
"builtin-modules": "^3.2.0",
|
||||||
"chai": "^4.3.4",
|
"chai": "^4.3.4",
|
||||||
"chai-as-promised": "^7.1.1",
|
"chai-as-promised": "^7.1.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
|
"esbuild": "^0.14.0",
|
||||||
"mocha": "^9.1.3",
|
"mocha": "^9.1.3",
|
||||||
"prettier": "^2.4.1",
|
"prettier": "^2.4.1",
|
||||||
"terser-webpack-plugin": "^5.2.4",
|
|
||||||
"ts-loader": "^9.2.6",
|
"ts-loader": "^9.2.6",
|
||||||
"ts-node": "^10.4.0",
|
"ts-node": "^10.4.0",
|
||||||
"tslib": "^2.2.0",
|
"tslib": "^2.2.0",
|
||||||
"typescript": "^4.4.4",
|
"typescript": "^4.4.4",
|
||||||
"webdav-server": "^2.6.2",
|
"webdav-server": "^2.6.2"
|
||||||
"webpack": "^5.58.2",
|
|
||||||
"webpack-cli": "^4.9.1"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.37.0",
|
"@aws-sdk/client-s3": "^3.37.0",
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
// "allowSyntheticDefaultImports": true,
|
// "allowSyntheticDefaultImports": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"importHelpers": true,
|
"importHelpers": true,
|
||||||
|
"isolatedModules": true,
|
||||||
"lib": ["dom", "es5", "scripthost", "es2015"]
|
"lib": ["dom", "es5", "scripthost", "es2015"]
|
||||||
},
|
},
|
||||||
"include": ["**/*.ts"]
|
"include": ["**/*.ts"]
|
||||||
|
|||||||
@ -1,68 +0,0 @@
|
|||||||
const path = require("path");
|
|
||||||
const webpack = require("webpack");
|
|
||||||
const TerserPlugin = require("terser-webpack-plugin");
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
entry: "./src/main.ts",
|
|
||||||
target: "web",
|
|
||||||
output: {
|
|
||||||
filename: "main.js",
|
|
||||||
path: __dirname,
|
|
||||||
libraryTarget: "commonjs",
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
// Work around for Buffer is undefined:
|
|
||||||
// https://github.com/webpack/changelog-v5/issues/10
|
|
||||||
new webpack.ProvidePlugin({
|
|
||||||
Buffer: ["buffer", "Buffer"],
|
|
||||||
}),
|
|
||||||
new webpack.ProvidePlugin({
|
|
||||||
process: "process/browser",
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.tsx?$/,
|
|
||||||
use: "ts-loader",
|
|
||||||
exclude: /node_modules/,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: [".tsx", ".ts", ".js"],
|
|
||||||
mainFields: ["browser", "module", "main"],
|
|
||||||
fallback: {
|
|
||||||
// assert: require.resolve("assert"),
|
|
||||||
// buffer: require.resolve("buffer/"),
|
|
||||||
// console: require.resolve("console-browserify"),
|
|
||||||
// constants: require.resolve("constants-browserify"),
|
|
||||||
// crypto: require.resolve("crypto-browserify"),
|
|
||||||
// domain: require.resolve("domain-browser"),
|
|
||||||
// events: require.resolve("events"),
|
|
||||||
// http: require.resolve("stream-http"),
|
|
||||||
// https: require.resolve("https-browserify"),
|
|
||||||
// os: require.resolve("os-browserify/browser"),
|
|
||||||
path: require.resolve("path-browserify"),
|
|
||||||
// punycode: require.resolve("punycode"),
|
|
||||||
process: require.resolve("process/browser"),
|
|
||||||
// querystring: require.resolve("querystring-es3"),
|
|
||||||
stream: require.resolve("stream-browserify"),
|
|
||||||
// string_decoder: require.resolve("string_decoder"),
|
|
||||||
// sys: require.resolve("util"),
|
|
||||||
// timers: require.resolve("timers-browserify"),
|
|
||||||
// tty: require.resolve("tty-browserify"),
|
|
||||||
// url: require.resolve("url"),
|
|
||||||
// util: require.resolve("util"),
|
|
||||||
// vm: require.resolve("vm-browserify"),
|
|
||||||
// zlib: require.resolve("browserify-zlib"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
externals: {
|
|
||||||
obsidian: "commonjs2 obsidian",
|
|
||||||
},
|
|
||||||
optimization: {
|
|
||||||
minimize: true,
|
|
||||||
minimizer: [new TerserPlugin({ extractComments: false })],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
Loading…
Reference in New Issue
Block a user