18 |
19 | This is a demo content generated from GrapesJS CLI.
20 | For the development, you should create a _index.html template file (might be a copy of this one) and on the next server start
21 | the new file will be served, and it will be ignored by git.
22 |
23 |
24 |
25 |
26 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/serve.ts:
--------------------------------------------------------------------------------
1 | import { printRow, buildWebpackArgs, log, normalizeJsonOpt } from './utils';
2 | import webpack from 'webpack';
3 | import webpackDevServer from 'webpack-dev-server';
4 | import webpackConfig from './webpack.config';
5 | import chalk from 'chalk';
6 |
7 | interface ServeOptions {
8 | host?: string;
9 | port?: number;
10 | verbose?: boolean;
11 | }
12 |
13 | /**
14 | * Start up the development server
15 | * @param {Object} opts
16 | */
17 | export default (opts: ServeOptions = {}) => {
18 | printRow('Start the development server...');
19 | const { host, port } = opts;
20 | const isVerb = opts.verbose;
21 | const resultWebpackConf = {
22 | ...webpackConfig({ args: buildWebpackArgs(opts), cmdOpts: opts }),
23 | ...normalizeJsonOpt(opts, 'webpack'),
24 | };
25 | const devServerConf = {
26 | ...resultWebpackConf.devServer,
27 | open: true,
28 | ...normalizeJsonOpt(opts, 'devServer'),
29 | };
30 |
31 | if (host !== 'localhost') {
32 | devServerConf.host = host;
33 | }
34 |
35 | if (port !== 8080) {
36 | devServerConf.port = port;
37 | }
38 |
39 | if (isVerb) {
40 | log(chalk.yellow('Server config:\n'), opts, '\n');
41 | log(chalk.yellow('DevServer config:\n'), devServerConf, '\n');
42 | }
43 |
44 | const compiler = webpack(resultWebpackConf);
45 | const server = new webpackDevServer(devServerConf, compiler);
46 |
47 | server.start();
48 | };
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: npm
4 | directory: "/"
5 | schedule:
6 | interval: weekly
7 | time: "04:00"
8 | open-pull-requests-limit: 10
9 | ignore:
10 | - dependency-name: "@babel/core"
11 | versions:
12 | - 7.12.13
13 | - 7.12.16
14 | - 7.12.17
15 | - 7.13.10
16 | - 7.13.13
17 | - 7.13.14
18 | - 7.13.15
19 | - 7.13.8
20 | - dependency-name: core-js
21 | versions:
22 | - 3.10.0
23 | - 3.10.1
24 | - 3.8.3
25 | - 3.9.0
26 | - 3.9.1
27 | - dependency-name: y18n
28 | versions:
29 | - 4.0.1
30 | - dependency-name: eslint
31 | versions:
32 | - 7.18.0
33 | - 7.19.0
34 | - 7.20.0
35 | - 7.21.0
36 | - 7.22.0
37 | - 7.23.0
38 | - 7.24.0
39 | - dependency-name: webpack-cli
40 | versions:
41 | - 4.4.0
42 | - 4.5.0
43 | - 4.5.0
44 | - dependency-name: webpack
45 | versions:
46 | - 4.46.0
47 | - 5.28.0
48 | - dependency-name: spdx-license-list
49 | versions:
50 | - 6.4.0
51 | - dependency-name: "@babel/plugin-transform-runtime"
52 | versions:
53 | - 7.12.15
54 | - 7.12.17
55 | - 7.13.10
56 | - 7.13.8
57 | - 7.13.9
58 | - dependency-name: "@babel/runtime"
59 | versions:
60 | - 7.12.13
61 | - 7.12.18
62 | - 7.13.10
63 | - 7.13.8
64 | - 7.13.9
65 | - dependency-name: "@babel/preset-env"
66 | versions:
67 | - 7.12.13
68 | - 7.12.16
69 | - 7.12.17
70 | - 7.13.10
71 | - 7.13.8
72 | - 7.13.9
73 | - dependency-name: webpack-dev-server
74 | versions:
75 | - 3.11.2
76 |
--------------------------------------------------------------------------------
/webpack.cli.ts:
--------------------------------------------------------------------------------
1 | import webpack, { type Configuration } from 'webpack';
2 | import NodeExternals from 'webpack-node-externals';
3 | import CopyPlugin from 'copy-webpack-plugin';
4 | import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
5 | import { resolve } from 'path';
6 |
7 | const MODE = process.env.BUILD_MODE === 'production' ? 'production' : 'development';
8 |
9 | const config: Configuration = {
10 | context: process.cwd(),
11 | mode: MODE,
12 | entry: './src/cli.ts',
13 | output: {
14 | filename: 'cli.js',
15 | path: resolve(__dirname, 'dist'),
16 | },
17 | target: 'node',
18 | stats: {
19 | preset: 'minimal',
20 | warnings: false,
21 | },
22 | module: {
23 | rules: [
24 | {
25 | test: /\.(jsx?|tsx?)$/,
26 | use: {
27 | loader: 'babel-loader',
28 | options: {
29 | cacheDirectory: true,
30 | presets: ['@babel/preset-typescript'],
31 | assumptions: {
32 | setPublicClassFields: false,
33 | },
34 | },
35 | },
36 | exclude: [/node_modules/],
37 | },
38 | ],
39 | },
40 | resolve: {
41 | extensions: ['.ts', '.tsx', '.js', '.jsx', '.d.ts'],
42 | },
43 | plugins: [
44 | new ForkTsCheckerWebpackPlugin(),
45 | new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }),
46 | new CopyPlugin({
47 | patterns: [
48 | { from: 'src/banner.txt', to: 'banner.txt' },
49 | {
50 | from: 'src/template',
51 | to: 'template',
52 | // Terser skip this file for minimization
53 | info: { minimized: true },
54 | },
55 | ],
56 | }),
57 | ],
58 | externalsPresets: { node: true },
59 | externals: [
60 | NodeExternals(),
61 | ],
62 | };
63 |
64 | export default config;
65 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "grapesjs-cli",
3 | "version": "4.1.3",
4 | "description": "GrapesJS CLI tool for the plugin development",
5 | "bin": {
6 | "grapesjs-cli": "dist/cli.js"
7 | },
8 | "files": [
9 | "dist"
10 | ],
11 | "scripts": {
12 | "build": "BUILD_MODE=production webpack --config ./webpack.cli.ts",
13 | "build:watch": "webpack --config ./webpack.cli.ts --watch",
14 | "lint": "eslint src",
15 | "patch": "npm version patch -m 'Bump v%s'",
16 | "test": "jest"
17 | },
18 | "repository": {
19 | "type": "git",
20 | "url": "https://github.com/GrapesJS/cli.git"
21 | },
22 | "keywords": [
23 | "grapesjs",
24 | "plugin",
25 | "dev",
26 | "cli"
27 | ],
28 | "author": "Artur Arseniev",
29 | "license": "BSD-3-Clause",
30 | "engines": {
31 | "node": ">=14.15.0"
32 | },
33 | "dependencies": {
34 | "@babel/core": "^7.20.12",
35 | "@babel/plugin-transform-runtime": "^7.19.6",
36 | "@babel/preset-env": "^7.20.2",
37 | "@babel/runtime": "^7.20.13",
38 | "babel-loader": "^9.1.2",
39 | "chalk": "^4.1.2",
40 | "core-js": "^3.27.2",
41 | "dts-bundle-generator": "^8.0.1",
42 | "html-webpack-plugin": "^5.5.0",
43 | "inquirer": "^8.2.5",
44 | "listr": "^0.14.3",
45 | "lodash.template": "^4.5.0",
46 | "rimraf": "^4.1.2",
47 | "spdx-license-list": "^6.6.0",
48 | "ts-loader": "^9.4.2",
49 | "ts-node": "^10.9.1",
50 | "webpack": "^5.94.0",
51 | "webpack-cli": "^5.0.1",
52 | "webpack-dev-server": "^4.11.1",
53 | "yargs": "^17.6.2"
54 | },
55 | "devDependencies": {
56 | "@babel/preset-typescript": "^7.21.5",
57 | "@types/jest": "^29.5.12",
58 | "@types/webpack-node-externals": "^3.0.0",
59 | "babel-jest": "^29.7.0",
60 | "copy-webpack-plugin": "^11.0.0",
61 | "eslint": "^7.32.0",
62 | "fork-ts-checker-webpack-plugin": "^8.0.0",
63 | "jest": "^29.7.0",
64 | "webpack-node-externals": "^3.0.0"
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/template/README.md:
--------------------------------------------------------------------------------
1 | # <%= name %>
2 |
3 | ## Live Demo
4 |
5 | > **Show a live example of your plugin**
6 |
7 | To make your plugin more engaging, create a simple live demo using online tools like [JSFiddle](https://jsfiddle.net), [CodeSandbox](https://codesandbox.io), or [CodePen](https://codepen.io). Include the demo link in your README. Adding a screenshot or GIF of the demo is a bonus.
8 |
9 | Below, you'll find the necessary HTML, CSS, and JavaScript. Copy and paste this code into one of the tools mentioned. Once you're done, delete this section and update the link at the top with your demo.
10 |
11 | ### HTML
12 |
13 | ```html
14 |