Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
@jenssimon/webpack-config-sfcc
Advanced tools
A shareable Webpack configuration for SFCC projects
This is a battle-proof Webpack configuration used and matured in multiple Salesforce Commerce Cloud storefront projects. To make these configurations shareable and maintainable this package was created.
Install the package:
yarn add @jenssimon/webpack-config-sfcc --dev
Create the development webpack configuration webpack.config.js
Create the production webpack configuration webpack.config.prod.js
webpack.config.js
Add a webpack.config.js
file in your project root. This is the configuration for the development environment.
import { fileURLToPath } from 'node:url'
import path from 'node:path'
import { createRequire } from 'node:module'
import { generateConfiguration, DEFAULT_DEVELOPMENT } from '@jenssimon/webpack-config-sfcc'
import cartridges from './webpack.cartridges.js'
const require = createRequire(import.meta.url)
const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename)
export default () => Object.entries(cartridges).map(([cartridge, config]) => generateConfiguration(cartridge, {
dirname,
resolver: require.resolve,
...DEFAULT_DEVELOPMENT,
...config,
}))
webpack.config.prod.js
Add a webpack.config.prod.js
file in your project root. This is the configuration for the production environment.
/**
* Webpack configuration for production build.
*/
import { generateConfiguration, DEFAULT_PRODUCTION } from '@jenssimon/webpack-config-sfcc'
import cartridges from './webpack.cartridges.js'
export default (env) => Object.entries(cartridges).map(([cartridge, config]) => generateConfiguration(cartridge, {
...DEFAULT_PRODUCTION,
...config,
env,
}))
webpack.cartridges.js
Add a webpack.cartridges.js
file in yout project root. This files contains specific additional configuration for each storefront cartridge within your project.
export default {
app_storefront_foo: {
// special configuration for `app_storefront_foo`
},
app_storefront_bar: {
// special configuration for `app_storefront_bar`
},
}
Those configurations can contain additional Webpack rules, aliases, ... For more details see the configuration section.
The __dirname
value of the outside webpack.config.js
file.
Used to resolve paths from the package that consumes the generated Webpack configuration.
Required
Just add
import { fileURLToPath } from 'node:url'
import path from 'node:path'
const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename)
// ...
{
dirname,
// ...
}
The require.resolve
function of the package that consumes the generated Webpack configuration.
Used to resolve modules.
Required
Just add
import { createRequire } from 'node:module'
const require = createRequire(import.meta.url)
// ...
{
resolver: require.resolve,
// ...
}
The entrypoint of the application.
Default: index.js
The path prefix for the generated bundles.
Default: undefined
This is used to bundle files to another subfolder during the production build (e.g. dist/
)..
Generate source maps for .js
and .css
files.
Default: false
Build Webpack config for usage with dev server.
Default: false
TODO
TODO
Use production mode.
Default: false
Loaders executed before mini-css-extract-plugin
loader.
Default: []
TODO
TODO
Additional entry point configurations.
TODO
TODO
Disable linting. Useful when linting was already done before Webpack build.
Default: false
TODO
Additional Webpack rules (see https://webpack.js.org/configuration/module/#modulerules) used for your cartridge.
Default: []
Aliases
Default: {}
Cartridges that needs an alias configuration.
Example:
aliasCartridges: [
{ alias: 'foo', cartridge: 'app_foo' },
],
This configuration creates the aliases foo
(for JS) and foo-css
(for CSS/SCSS).
You can skip the generation of the -css
alias using the noStyle
flag:
aliasCartridges: [
{ alias: 'bar', cartridge: 'app_bar', noStyle: true },
],
Aliases for app_storefront_base
will be created by default.
The target environment for swc (see https://swc.rs/docs/configuring-swc#jsctarget).
Default: "es2019"
Some packages from node_modules
need to be transpiled. You can specify a list of packages using this option.
Default: []
Example:
transformNodeModules: [
'lit',
'lit-element',
'lit-html',
],
Allow circular dependencies.
Default: false
MIT © 2023 Jens Simon
FAQs
A shareable Webpack configuration for SFCC projects
We found that @jenssimon/webpack-config-sfcc demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.