#jquery #node-modules #phoenix #esbuild
#jquery #узлы-модули #Феникс #esbuild
Вопрос:
В настоящее время я использую esbuild для загрузки своих статических ресурсов. Я использую его с файлом package.json для поддержки моих плагинов javascript. Плагин jQuery доступен в моем app.js, но не в моих модулях node_modules. Ошибки модуля datepicker: «jQuery не определен»
В webpack был модуль ProvidePlugin, который исправил это. Как мне это сделать с помощью esbuild?
app.js
import jquery from "jquery"; window.jQuery = jquery; window.$ = jquery; $ = jquery; import datepicker from "jquery-ui/ui/i18n/datepicker-nl-BE" ----gt;gt;gt;gt;gt; ReferenceError: jQuery is not defined at datepicker-nl-BE.js:13 lt;lt;lt;lt;lt;--------
dev.бывшие
watchers: [ #esbuild: {Esbuild, :install_and_run, [:default, ~w(--sourcemap=inline --watch)]}, node: ["esbuild.js", "--watch", cd: Path.expand("../assets", __DIR__)], node: ["sass-watch.js", cd: Path.expand("../assets", __DIR__), into: IO.stream(:stdio, :line), stderr_to_stdout: true ] ]
esbuild.js
const esbuild = require('esbuild') const sassPlugin = require('esbuild-plugin-sass') // Decide which mode to proceed with let mode = 'build' process.argv.slice(2).forEach((arg) =gt; { if (arg === '--watch') { mode = 'watch' } else if (arg === '--deploy') { mode = 'deploy' } }) const loader = { '.png': 'file', '.ttf': 'file' } // Define esbuild options extras for watch and deploy let opts = { entryPoints: ['js/app.js'], bundle: true, logLevel: 'info', target: 'es2016', outdir: '../priv/static/assets', loader, plugins: [sassPlugin()] } if (mode === 'watch') { opts = { watch: true, sourcemap: 'inline', ...opts } } if (mode === 'deploy') { opts = { minify: true, ...opts } } // Start esbuild with previously defined options // Stop the watcher when STDIN gets closed (no zombies please!) esbuild.build(opts).then((result) =gt; { if (mode === 'watch') { process.stdin.pipe(process.stdout) process.stdin.on('end', () =gt; { result.stop() }) } }).catch((error) =gt; { process.exit(1) })