mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
9fd662fdce
As far as I can tell, the browser value overrides the main value in many cases. But then, we don't want to use the iife format, since it don't work well with bundlers. This commit fixes the issue by simply removing the key, so the main entry will be used instead. maybe fixes #1181
95 lines
2.6 KiB
JavaScript
95 lines
2.6 KiB
JavaScript
import pkg from "./package.json";
|
|
import git from "git-rev-sync";
|
|
import typescript from 'rollup-plugin-typescript2';
|
|
import { terser } from "rollup-plugin-terser";
|
|
import dts from "rollup-plugin-dts";
|
|
|
|
let input, output;
|
|
|
|
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");
|
|
}
|
|
|
|
const outro = `
|
|
__info__.version = '${pkg.version}';
|
|
__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":
|
|
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,
|
|
freeze: false,
|
|
plugins: minified ? [terser()] : [],
|
|
indent: ' ', // indent with 4 spaces
|
|
};
|
|
}
|
|
|
|
export default [
|
|
{
|
|
input,
|
|
output,
|
|
plugins: [
|
|
typescript({
|
|
useTsconfigDeclarationDir: true
|
|
}),
|
|
]
|
|
},
|
|
{
|
|
input: "dist/types/index.d.ts",
|
|
output: [{ file: "dist/types/owl.d.ts", format: "es" }],
|
|
plugins: [dts()],
|
|
},
|
|
];
|