Files

102 lines
2.9 KiB
JavaScript
Raw Permalink Normal View History

import pkg from "./package.json";
2019-03-21 09:55:04 +01:00
import git from "git-rev-sync";
import typescript from "rollup-plugin-typescript2";
import { terser } from "rollup-plugin-terser";
2022-06-09 14:08:11 +02:00
import dts from "rollup-plugin-dts";
let input, output;
2022-07-12 13:07:03 +02:00
const IIFE_FILENAME = "dist/owl.iife.js";
const CJS_FILENAME = "dist/owl.cjs.js";
const ES_FILENAME = "dist/owl.es.js";
if (pkg.module !== ES_FILENAME || pkg.main !== CJS_FILENAME) {
throw new Error("package.json has been modified. Build script should be updated accordingly");
}
2022-07-12 13:07:03 +02:00
const outro = `
__info__.date = '${new Date().toISOString()}';
__info__.hash = '${git.short()}';
__info__.url = 'https://github.com/odoo/owl';
`;
switch (process.argv[4]) {
case "compiler":
(input = "src/compiler/index.ts"),
(output = [getConfigForFormat("cjs", "dist/compiler.js", "")]);
break;
case "runtime":
2022-05-26 23:45:40 +02:00
input = "src/runtime/index.ts";
output = [
getConfigForFormat("esm", addSuffix(ES_FILENAME, "runtime"), outro),
getConfigForFormat("cjs", addSuffix(CJS_FILENAME, "runtime"), outro),
getConfigForFormat("iife", addSuffix(IIFE_FILENAME, "runtime"), outro),
getConfigForFormat("iife", addSuffix(IIFE_FILENAME, "runtime"), outro, true),
];
break;
default:
(input = "src/index.ts"),
(output = [
getConfigForFormat("esm", ES_FILENAME, outro),
getConfigForFormat("cjs", CJS_FILENAME, outro),
getConfigForFormat("iife", IIFE_FILENAME, outro),
getConfigForFormat("iife", IIFE_FILENAME, outro, true),
]);
}
/**
* Generate from a string depicting a path a new path for the minified version.
* @param {string} pkgFileName file name
*/
function addSuffix(pkgFileName, suffix) {
const parts = pkgFileName.split(".");
parts.splice(parts.length - 1, 0, suffix);
return parts.join(".");
}
/**
* Get the rollup config based on the arguments
* @param {string} format format of the bundle
* @param {string} generatedFileName generated file name
* @param {boolean} minified should it be minified
*/
function getConfigForFormat(format, generatedFileName, outro, minified = false) {
return {
file: minified ? addSuffix(generatedFileName, "min") : generatedFileName,
format: format,
name: "owl",
extend: true,
outro: outro,
2020-11-26 16:45:25 +01:00
freeze: false,
plugins: minified ? [terser()] : [],
indent: " ", // indent with 4 spaces
};
}
2022-06-09 14:08:11 +02:00
export default [
{
input,
output,
plugins: [
typescript({
useTsconfigDeclarationDir: true,
}),
],
},
{
input: "src/compiler/standalone/index.ts",
output: [{ file: "dist/compile_templates.mjs", format: "es" }],
external: ["fs", "fs/promises", "path", "jsdom"],
plugins: [
typescript({
useTsconfigDeclarationDir: true,
2022-06-09 14:08:11 +02:00
}),
],
2022-06-09 14:08:11 +02:00
},
{
input: "dist/types/index.d.ts",
output: [{ file: "dist/types/owl.d.ts", format: "es" }],
plugins: [dts()],
},
];