Building Smart Modules
This help tutorial will teach you how to build all Smart /modules with Webpack. It is extending the webpack configuration from Using with Webpack.
.Using Smart Elements with Webpack
projectwebpack-demo |- package.json + |- webpack.config.js |- /dist |- |- /src |- smart.button.js |- smart.element.js |- ...... |- /mobules |- /smart.element.js |- /smart.button.js |- /.......
As you can see from the project structure, we placed all smart javasript files within the /src/ folder.
webpack.config.js
const webpack = require('webpack');
const path = require('path');
const fs = require('fs');
function getEntries (){
return fs.readdirSync('./src/modules/')
.filter(
(file) => file.match(/.*\.js$/)
)
.map((file) => {
return {
name: file.substring(0, file.length - 3),
path: './src/modules/' + file
}
}).reduce((memo, file) => {
memo[file.name] = file.path
return memo;
}, {})
}
module.exports = {
mode: 'production',
entry: getEntries,
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new webpack.BannerPlugin({
banner: '\n/* Smart HTML Elements v5.0.0 (2019-November) \nCopyright (c) 2011-2019 jQWidgets. \nLicense: https://htmlelements.com/license/ */\n\n',
}),
],
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
};
package.json
{
"name": "webpack-demo",
"version": "1.0.0",
"description": "",
"scripts": {
"build": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.20.2",
"webpack-cli": "^3.1.2"
},
"dependencies": {
"@babel/preset-env": "^7.7.1",
"babel-loader": "^8.0.6",
"es6-loader": "^0.2.0",
"es6-promise": "^4.2.8",
"http-server": "^0.11.1",
"lodash": "^4.17.5"
}
}
Install and Run Webpack
1. Run the npm install command to install the required node modules. (When installing a package that will be bundled into your production bundle, you should use npm install --save. If you're installing a package for development purposes (e.g. a linter, testing libraries, etc.) then you should use npm install --save-dev.)2. Now the npm run build command can be used.
output
The output is within the /dist/ folder. All web component modules are now packed and ready for usage in your applications.
You can now refer them in your applications like that:
<script type="module" src="../../source/modules/smart.grid.js"></script>