OneBot: Leantime 改造版源码(BOM/Univer 表格/AI 接管/品牌替换等)
This commit is contained in:
187
webpack.mix.js
Normal file
187
webpack.mix.js
Normal file
@@ -0,0 +1,187 @@
|
||||
const pjson = require('./package.json');
|
||||
const glob = require('glob');
|
||||
const path = require('path');
|
||||
const version = pjson.version;
|
||||
|
||||
const fs = require("fs");
|
||||
|
||||
// Helper to get all files of a given extension in a given directory and its subfolders.
|
||||
function getFilesRecursive(dir, type) {
|
||||
// The list of files that we will return.
|
||||
let files = []
|
||||
// Loop everything in given location.
|
||||
fs.readdirSync(dir).forEach(file => {
|
||||
let fileName = `${dir}/${file}`
|
||||
// Add if its a file and it is of the correct file type.
|
||||
if(fs.statSync(fileName).isFile() && fileName.endsWith(type)) {
|
||||
files.push(fileName)
|
||||
}
|
||||
// Process subfolder.
|
||||
if(!fs.statSync(fileName).isFile()) {
|
||||
// Recusively loop this function for the subfolder.
|
||||
files = files.concat(getFilesRecursive(fileName, type))
|
||||
}
|
||||
})
|
||||
return files
|
||||
}
|
||||
|
||||
|
||||
|
||||
let mix = require('laravel-mix');
|
||||
require('laravel-mix-eslint');
|
||||
require('mix-tailwindcss');
|
||||
|
||||
require('dotenv').config({ path: 'config/.env' });
|
||||
|
||||
mix
|
||||
.setPublicPath('public/dist')
|
||||
.setResourceRoot(`../`);
|
||||
|
||||
/*
|
||||
|
||||
//Draft for file based js controller loading
|
||||
getFilesRecursive('app/Domain', '.js').forEach(file => {
|
||||
subfolder = file.match(/(.*)[\/\\]/)[1]||''; // 'src/js/libraries'
|
||||
subfolder = subfolder.replace('app/Domain', ''); // '/libraries'
|
||||
mix.js(file, 'js' + subfolder);
|
||||
});
|
||||
*/
|
||||
|
||||
|
||||
// this is the URL to place assets referenced in the CSS/JS
|
||||
mix // this is what to prefix the URL with
|
||||
.combine('./public/assets/js/libs/prism/prism.js', `public/dist/js/compiled-footer.${version}.min.js`)
|
||||
.js('./public/assets/js/app/htmx.js', `public/dist/js/compiled-htmx.${version}.min.js`)
|
||||
.js('./public/assets/js/app/htmx-extensions.js', `public/dist/js/compiled-htmx-extensions.${version}.min.js`)
|
||||
// Client-side export libs (html2canvas + jsPDF). Copied unversioned so
|
||||
// consumers (e.g. StrategyPro's Logic Model PNG/PDF export) can fetch
|
||||
// them on demand via a stable URL without needing the Mix manifest.
|
||||
// They're lazy-loaded by JS only when an export is triggered, so they
|
||||
// never hit the wire for users who don't use the feature.
|
||||
.copy('./node_modules/html2canvas/dist/html2canvas.min.js', 'public/dist/js/html2canvas.min.js')
|
||||
.copy('./node_modules/jspdf/dist/jspdf.umd.min.js', 'public/dist/js/jspdf.umd.min.js')
|
||||
.js("./node_modules/@lottiefiles/lottie-player/dist/lottie-player.js", `public/dist/js/compiled-lottieplayer.${version}.min.js`)
|
||||
.combine([
|
||||
"./public/assets/js/app/app.js",
|
||||
"./public/assets/js/app/core/snippets.js",
|
||||
"./public/assets/js/app/core/modals.js",
|
||||
"./public/assets/js/app/core/tableHandling.js",
|
||||
"./public/assets/js/app/core/datePickers.js",
|
||||
"./public/assets/js/app/core/dateHelper.js",
|
||||
"./public/assets/js/app/core/accessibility.js",
|
||||
|
||||
...glob.sync("./app/Domain/**/*.js").map(f => `./${f}`)
|
||||
], `public/dist/js/compiled-app.${version}.min.js`)
|
||||
.combine([
|
||||
"./node_modules/jquery/dist/jquery.js",
|
||||
"./public/assets/js/libs/bootstrap.min.js",
|
||||
], `public/dist/js/compiled-frameworks.${version}.min.js`)
|
||||
.combine([
|
||||
"./node_modules/jquery-ui-dist/jquery-ui.js",
|
||||
"./node_modules/jquery-ui-touch-punch/jquery.ui.touch-punch.js",
|
||||
"./node_modules/chosen-js/chosen.jquery.js",
|
||||
"./public/assets/js/libs/jquery.growl.js",
|
||||
"./public/assets/js/libs/jquery.form.js",
|
||||
"./public/assets/js/libs/jquery.tagsinput.min.js",
|
||||
"./public/assets/js/libs/bootstrap-fileupload.min.js",
|
||||
"./node_modules/jquery-is-in-viewport/dist/isInViewport.jquery.js",
|
||||
"./public/assets/js/app/core/nestedSortable.js",
|
||||
|
||||
], `public/dist/js/compiled-framework-plugins.${version}.min.js`)
|
||||
.combine([
|
||||
"./node_modules/luxon/build/global/luxon.js",
|
||||
"./node_modules/moment/moment.js",
|
||||
"./public/assets/js/libs/jquery.form.js",
|
||||
"./node_modules/@popperjs/core/dist/umd/popper.js",
|
||||
"./node_modules/tippy.js/dist/tippy-bundle.umd.js",
|
||||
"./public/assets/js/libs/slimselect.min.js",
|
||||
"./node_modules/canvas-confetti/dist/confetti.browser.js",
|
||||
"./public/assets/js/libs/jquery.nyroModal/js/jquery.nyroModal.custom.js",
|
||||
"./public/assets/js/libs/uppy/uppy.js",
|
||||
"./node_modules/croppie/croppie.js",
|
||||
"./node_modules/packery/dist/packery.pkgd.js",
|
||||
"./node_modules/imagesloaded/imagesloaded.pkgd.js",
|
||||
"./node_modules/shepherd.js/dist/js/shepherd.js",
|
||||
"./node_modules/isotope-layout/dist/isotope.pkgd.js",
|
||||
"./node_modules/gridstack/dist/gridstack-all.js",
|
||||
"./node_modules/jstree/dist/jstree.js",
|
||||
"./node_modules/@assuradeurengilde/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.js",
|
||||
"./node_modules/leader-line/leader-line.min.js",
|
||||
"./public/assets/js/libs/simple-color-picker-master/jquery.simple-color-picker.js",
|
||||
"./public/assets/js/libs/emojipicker/vanillaEmojiPicker.js",
|
||||
"./node_modules/mermaid/dist/mermaid.min.js",
|
||||
"./node_modules/marked/marked.min.js",
|
||||
], `public/dist/js/compiled-global-component.${version}.min.js`)
|
||||
.combine([
|
||||
"./node_modules/ical.js/build/ical.min.js",
|
||||
"./node_modules/fullcalendar/index.global.min.js",
|
||||
"./node_modules/@fullcalendar/icalendar/index.global.min.js",
|
||||
"./node_modules/@fullcalendar/google-calendar/index.global.min.js",
|
||||
"./node_modules/@fullcalendar/luxon3/index.global.min.js",
|
||||
|
||||
], `public/dist/js/compiled-calendar-component.${version}.min.js`)
|
||||
.combine([
|
||||
"./node_modules/datatables.net/js/jquery.dataTables.js",
|
||||
"./node_modules/datatables.net-rowgroup/js/dataTables.rowGroup.js",
|
||||
"./node_modules/datatables.net-rowreorder/js/dataTables.rowReorder.js",
|
||||
"./node_modules/datatables.net-buttons/js/dataTables.buttons.js",
|
||||
"./node_modules/datatables.net-buttons/js/buttons.html5.js",
|
||||
"./node_modules/datatables.net-buttons/js/buttons.print.js",
|
||||
"./node_modules/datatables.net-buttons/js/buttons.colVis.js",
|
||||
], `public/dist/js/compiled-table-component.${version}.min.js`)
|
||||
.js('./public/assets/js/app/core/tiptap/index.js', `public/dist/js/compiled-tiptap-editor.${version}.min.js`)
|
||||
.combine([
|
||||
'./public/assets/js/app/core/tiptap/extensions/toolbar.js'
|
||||
], `public/dist/js/compiled-tiptap-toolbar.${version}.min.js`)
|
||||
.combine([
|
||||
'./public/assets/js/app/core/tiptap/test-utils.js'
|
||||
], `public/dist/js/compiled-tiptap-tests.${version}.min.js`)
|
||||
.combine([
|
||||
"./public/assets/js/libs/simpleGantt/snap.svg-min.js",
|
||||
"./public/assets/js/libs/simpleGantt/frappe-gantt.js",
|
||||
], `public/dist/js/compiled-gantt-component.${version}.min.js`)
|
||||
.combine([
|
||||
"./node_modules/chart.js/dist/chart.js",
|
||||
"./node_modules/chartjs-adapter-luxon/dist/chartjs-adapter-luxon.umd.js",
|
||||
], `public/dist/js/compiled-chart-component.${version}.min.js`)
|
||||
.js('./public/assets/js/app/onebot-sheet.js', `public/dist/js/compiled-univer-component.${version}.min.js`)
|
||||
.less('./public/assets/less/main.less', `public/dist/css/main.${version}.min.css`, {
|
||||
sourceMap: true,
|
||||
})
|
||||
.less('./public/assets/less/app.less', `public/dist/css/app.${version}.min.css`, {
|
||||
sourceMap: true,
|
||||
})
|
||||
.copy('./public/assets/css/components/tiptap-editor.css', `public/dist/css/tiptap-editor.${version}.min.css`)
|
||||
.tailwind()
|
||||
.copy('./public/assets/images', 'public/dist/images')
|
||||
.copy('./public/assets/fonts', 'public/dist/fonts')
|
||||
.copy('./public/assets/lottie', 'public/dist/lottie')
|
||||
.copy('./node_modules/katex/dist/fonts', 'public/dist/fonts/katex')
|
||||
.copy('./node_modules/katex/dist/katex.min.css', 'public/dist/css/katex.min.css')
|
||||
.copy('./node_modules/katex/dist/fonts', 'public/dist/css/fonts')
|
||||
.eslint({
|
||||
fix: true,
|
||||
extensions: ['js'],
|
||||
exclude: [
|
||||
'node_modules',
|
||||
'public/assets/js/libs',
|
||||
],
|
||||
overrideConfig: {
|
||||
parser: '@babel/eslint-parser',
|
||||
}
|
||||
})
|
||||
.webpackConfig({
|
||||
devtool: 'inline-source-map',
|
||||
resolve: {
|
||||
extensions: ['.cjs', '.js', '.mjs', '.jsx', '.json'],
|
||||
alias: {
|
||||
'images': path.resolve(__dirname, 'public/assets/images'),
|
||||
'js': path.resolve(__dirname, 'public/assets/js'),
|
||||
'css': path.resolve(__dirname, 'public/assets/css'),
|
||||
'fonts': path.resolve(__dirname, 'public/assets/fonts'),
|
||||
// @univerjs/icons 的 cjs 构建是坏的(require .js 但文件是 .cjs),
|
||||
// 但 esm 构建是好的(import .js 且文件就是 .js)——alias 强制走 esm 入口
|
||||
'@univerjs/icons': path.resolve(__dirname, 'node_modules/@univerjs/icons/dist/esm/index.js')
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user