mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-24 14:42:13 +00:00
85 lines
2.2 KiB
JavaScript
85 lines
2.2 KiB
JavaScript
const path = require("path");
|
|
const fs = require("fs");
|
|
const webpack = require("webpack");
|
|
|
|
// Build the C-like library
|
|
const lib = {
|
|
entry: [ "./src/glue/js", "./src/index.ts" ],
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.ts$/,
|
|
use: "ts-loader",
|
|
exclude: /node_modules/
|
|
}
|
|
]
|
|
},
|
|
externals: [ "binaryen" ],
|
|
resolve: {
|
|
extensions: [ ".ts", ".js" ]
|
|
},
|
|
output: {
|
|
filename: "assemblyscript.js",
|
|
path: path.resolve(__dirname, "dist"),
|
|
library: "assemblyscript",
|
|
libraryTarget: "umd",
|
|
globalObject: "typeof self !== 'undefined' ? self : this"
|
|
},
|
|
devtool: "source-map",
|
|
performance: {
|
|
hints : false
|
|
}
|
|
};
|
|
|
|
// Build asc for browser usage
|
|
const bin = {
|
|
context: path.join(__dirname, "cli"),
|
|
entry: [ "./asc.js" ],
|
|
externals: [{
|
|
"../dist/assemblyscript.js": "assemblyscript"
|
|
}],
|
|
node: {
|
|
"buffer": false,
|
|
"fs": "empty",
|
|
"global": true,
|
|
"os": false,
|
|
"process": "mock",
|
|
"crypto": false
|
|
},
|
|
output: {
|
|
filename: "asc.js",
|
|
path: path.resolve(__dirname, "dist"),
|
|
library: "asc",
|
|
libraryTarget: "umd",
|
|
globalObject: "typeof self !== 'undefined' ? self : this"
|
|
},
|
|
devtool: "source-map",
|
|
performance: {
|
|
hints : false
|
|
},
|
|
plugins: [
|
|
new webpack.DefinePlugin({
|
|
BUNDLE_VERSION: JSON.stringify(require("./package.json").version),
|
|
BUNDLE_LIBRARY: (() => {
|
|
const libDir = path.join(__dirname, "std", "assembly");
|
|
const libFiles = require("glob").sync("**/!(*.d).ts", { cwd: libDir });
|
|
const lib = {};
|
|
libFiles.forEach(file => lib[file.replace(/\.ts$/, "")] = bundleFile(path.join(libDir, file)));
|
|
return lib;
|
|
})(),
|
|
BUNDLE_DEFINITIONS: {
|
|
"assembly": bundleFile(path.join(__dirname, "std", "assembly", "index.d.ts")),
|
|
"portable": bundleFile(path.join(__dirname, "std", "portable", "index.d.ts"))
|
|
},
|
|
__dirname: JSON.stringify(".")
|
|
}),
|
|
new webpack.IgnorePlugin(/\.\/src|package\.json|^(ts\-node|glob)$/)
|
|
]
|
|
};
|
|
|
|
function bundleFile(filename) {
|
|
return JSON.stringify(fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n"));
|
|
}
|
|
|
|
module.exports = [ lib, bin ];
|