diff --git a/.github/workflows/mjml-workflow.yml b/.github/workflows/mjml-workflow.yml
index afd23eb3c..06a6a6011 100644
--- a/.github/workflows/mjml-workflow.yml
+++ b/.github/workflows/mjml-workflow.yml
@@ -5,7 +5,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- node-version: [ 16.x, 18.x, 20.x]
+ node-version: [20.x, 22.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
@@ -13,7 +13,7 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
- name: Run linting & tests
- run: |
+ run: |
yarn install
yarn build
yarn lint
diff --git a/lerna.json b/lerna.json
index 72a32f30e..0395eb4b8 100644
--- a/lerna.json
+++ b/lerna.json
@@ -9,5 +9,5 @@
},
"npmClient": "yarn",
"useWorkspaces": true,
- "version": "4.15.3"
+ "version": "5.0.0-alpha.6"
}
diff --git a/packages/mjml-accordion/package.json b/packages/mjml-accordion/package.json
index 73155dbcb..317adc277 100644
--- a/packages/mjml-accordion/package.json
+++ b/packages/mjml-accordion/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-accordion",
"description": "mjml-accordion",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-body/package.json b/packages/mjml-body/package.json
index 409a0a68c..839cad5a6 100644
--- a/packages/mjml-body/package.json
+++ b/packages/mjml-body/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-body",
"description": "mjml-body",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-browser/package.json b/packages/mjml-browser/package.json
index 8bac738f7..8378d9763 100644
--- a/packages/mjml-browser/package.json
+++ b/packages/mjml-browser/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-browser",
"description": "MJML: the only framework that makes responsive-email easy",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
diff --git a/packages/mjml-button/package.json b/packages/mjml-button/package.json
index c416b51c5..8c54bd07d 100644
--- a/packages/mjml-button/package.json
+++ b/packages/mjml-button/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-button",
"description": "mjml-button",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-carousel/package.json b/packages/mjml-carousel/package.json
index e23114d07..9ccad2d6c 100644
--- a/packages/mjml-carousel/package.json
+++ b/packages/mjml-carousel/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-carousel",
"description": "mjml-carousel",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-cli/package.json b/packages/mjml-cli/package.json
index 72d13a8af..2401aeadb 100644
--- a/packages/mjml-cli/package.json
+++ b/packages/mjml-cli/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-cli",
"description": "MJML: the only framework that makes responsive-email easy",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "bin/mjml",
"bin": {
"mjml-cli": "bin/mjml"
@@ -28,14 +28,11 @@
"@babel/runtime": "^7.23.9",
"chokidar": "^3.0.0",
"glob": "^10.3.10",
- "html-minifier": "^4.0.0",
- "js-beautify": "^1.6.14",
"lodash": "^4.17.21",
"minimatch": "^9.0.3",
- "mjml-core": "4.15.3",
- "mjml-migrate": "4.15.3",
- "mjml-parser-xml": "4.15.3",
- "mjml-validator": "4.15.3",
+ "mjml-core": "5.0.0-alpha.6",
+ "mjml-parser-xml": "5.0.0-alpha.6",
+ "mjml-validator": "5.0.0-alpha.6",
"yargs": "^17.7.2"
},
"devDependencies": {
diff --git a/packages/mjml-cli/src/client.js b/packages/mjml-cli/src/client.js
index 587afd63d..67763be75 100644
--- a/packages/mjml-cli/src/client.js
+++ b/packages/mjml-cli/src/client.js
@@ -1,12 +1,9 @@
import path from 'path'
import yargs from 'yargs'
import { flow, pick, isNil, negate, pickBy } from 'lodash/fp'
-import { isArray, isEmpty, map, get, omit } from 'lodash'
-import { html as htmlBeautify } from 'js-beautify'
-import { minify as htmlMinify } from 'html-minifier'
+import { isArray, isEmpty, map, get } from 'lodash'
import mjml2html, { components, initializeType } from 'mjml-core'
-import migrate from 'mjml-migrate'
import validate, { dependencies } from 'mjml-validator'
import MJMLParser from 'mjml-parser-xml'
@@ -60,11 +57,6 @@ export default async () => {
describe: 'Compile MJML File(s)',
type: 'array',
},
- m: {
- alias: 'migrate',
- describe: 'Migrate MJML3 File(s) (deprecated)',
- type: 'array',
- },
v: {
alias: 'validate',
describe: 'Run validator on File(s)',
@@ -212,13 +204,11 @@ export default async () => {
const convertedStream = []
const failedStream = []
- inputs.forEach((i) => {
+ // eslint-disable-next-line guard-for-in
+ for (const i of inputs) {
try {
let compiled
switch (inputOpt) {
- case 'm':
- compiled = { html: migrate(i.mjml, { beautify: true }) }
- break
case 'v': // eslint-disable-next-line no-case-declarations
const mjmlJson = MJMLParser(i.mjml, {
components,
@@ -238,20 +228,16 @@ export default async () => {
const beautify = config.beautify && config.beautify !== 'false'
const minify = config.minify && config.minify !== 'false'
- compiled = mjml2html(i.mjml, {
- ...omit(config, ['minify', 'beautify']),
+ // eslint-disable-next-line no-await-in-loop
+ compiled = await mjml2html(i.mjml, {
+ ...config,
+ minify,
+ beautify,
+ beautifyConfig,
+ minifyConfig,
filePath: filePath || i.file,
actualPath: i.file,
})
- if (beautify) {
- compiled.html = htmlBeautify(compiled.html, beautifyConfig)
- }
- if (minify) {
- compiled.html = htmlMinify(compiled.html, {
- ...minifyConfig,
- ...config.minifyOptions,
- })
- }
}
}
@@ -260,7 +246,7 @@ export default async () => {
EXIT_CODE = 2
failedStream.push({ file: i.file, error: e })
}
- })
+ }
convertedStream.forEach((s) => {
if (get(s, 'compiled.errors.length')) {
diff --git a/packages/mjml-cli/src/commands/watchFiles.js b/packages/mjml-cli/src/commands/watchFiles.js
index 55e724f15..3533ab3d2 100644
--- a/packages/mjml-cli/src/commands/watchFiles.js
+++ b/packages/mjml-cli/src/commands/watchFiles.js
@@ -5,9 +5,6 @@ import { match } from 'minimatch'
import path from 'path'
import mjml2html from 'mjml-core'
import { flow, pickBy, flatMap, uniq, difference, remove } from 'lodash/fp'
-import { omit } from 'lodash'
-import { html as htmlBeautify } from 'js-beautify'
-import { minify as htmlMinify } from 'html-minifier'
import readFile from './readFile'
import makeOutputToFile from './outputToFile'
@@ -51,25 +48,18 @@ export default (input, options) => {
}
const readAndCompile = flow(
(file) => ({ file, content: readFile(file).mjml }),
- (args) => {
- const { config, beautifyConfig, minifyConfig } = options
+ async (args) => {
+ const { config } = options
const beautify = config.beautify && config.beautify !== 'false'
const minify = config.minify && config.minify !== 'false'
- const compiled = mjml2html(args.content, {
+ const compiled = await mjml2html(args.content, {
+ ...config,
+ beautify,
+ minify,
filePath: args.file,
actualPath: args.file,
- ...omit(config, ['minify', 'beautify']),
})
- if (beautify) {
- compiled.html = htmlBeautify(compiled.html, beautifyConfig)
- }
- if (minify) {
- compiled.html = htmlMinify(compiled.html, {
- ...minifyConfig,
- ...config.minifyOptions,
- })
- }
return {
...args,
diff --git a/packages/mjml-column/package.json b/packages/mjml-column/package.json
index d60b4815e..22d6b83dd 100644
--- a/packages/mjml-column/package.json
+++ b/packages/mjml-column/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-column",
"description": "mjml-column",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-core/package.json b/packages/mjml-core/package.json
index ff80054d2..036bac1f9 100644
--- a/packages/mjml-core/package.json
+++ b/packages/mjml-core/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-core",
"description": "mjml-core",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -25,13 +25,13 @@
"@babel/runtime": "^7.23.9",
"cheerio": "1.0.0-rc.12",
"detect-node": "^2.0.4",
- "html-minifier": "^4.0.0",
- "js-beautify": "^1.6.14",
- "juice": "^10.0.0",
+ "html-crush": "^4.2.0",
+ "juice": "^11.0.0",
"lodash": "^4.17.21",
- "mjml-migrate": "4.15.3",
- "mjml-parser-xml": "4.15.3",
- "mjml-validator": "4.15.3"
+ "mjml-parser-xml": "5.0.0-alpha.6",
+ "mjml-validator": "5.0.0-alpha.6",
+ "postcss": "^8.4.33",
+ "prettier": "^3.2.4"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-core/src/index.js b/packages/mjml-core/src/index.js
index f5ddd41a9..ca5c9e750 100644
--- a/packages/mjml-core/src/index.js
+++ b/packages/mjml-core/src/index.js
@@ -12,16 +12,15 @@ import {
} from 'lodash'
import path from 'path'
import juice from 'juice'
-import { html as htmlBeautify } from 'js-beautify'
-import { minify as htmlMinify } from 'html-minifier'
import { load } from 'cheerio'
+import prettier from 'prettier'
+import { crush } from 'html-crush'
import MJMLParser from 'mjml-parser-xml'
import MJMLValidator, {
dependencies as globalDependencies,
assignDependencies,
} from 'mjml-validator'
-import { handleMjml3 } from 'mjml-migrate'
import { initComponent } from './createComponent'
import globalComponents, {
@@ -51,7 +50,7 @@ class ValidationError extends Error {
}
}
-export default function mjml2html(mjml, options = {}) {
+export default async function mjml2html(mjml, options = {}) {
let content = ''
let errors = []
@@ -118,7 +117,6 @@ export default function mjml2html(mjml, options = {}) {
validationLevel = 'soft',
filePath = '.',
actualPath = '.',
- noMigrateWarn = false,
preprocessors,
presets = [],
printerSupport = false,
@@ -148,8 +146,6 @@ export default function mjml2html(mjml, options = {}) {
})
}
- mjml = handleMjml3(mjml, { noMigrateWarn })
-
const globalData = {
backgroundColor: '',
beforeDoctype: '',
@@ -397,31 +393,15 @@ export default function mjml2html(mjml, options = {}) {
content = mergeOutlookConditionnals(content)
if (beautify) {
- // eslint-disable-next-line no-console
- console.warn(
- '"beautify" option is deprecated in mjml-core and only available in mjml cli.',
- )
- content = htmlBeautify(content, {
- indent_size: 2,
- wrap_attributes_indent_size: 2,
- max_preserve_newline: 0,
- preserve_newlines: false,
+ content = await prettier.format(content, {
+ parser: 'html',
+ printWidth: 240,
+ singleQuote: true,
})
}
if (minify) {
- // eslint-disable-next-line no-console
- console.warn(
- '"minify" option is deprecated in mjml-core and only available in mjml cli.',
- )
-
- content = htmlMinify(content, {
- collapseWhitespace: true,
- minifyCSS: false,
- caseSensitive: true,
- removeEmptyAttributes: true,
- ...minifyOptions,
- })
+ content = crush(content, { ...options.minifyOptions }).result
}
return {
diff --git a/packages/mjml-divider/package.json b/packages/mjml-divider/package.json
index d25f7ab70..12ae7935c 100644
--- a/packages/mjml-divider/package.json
+++ b/packages/mjml-divider/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-divider",
"description": "mjml-divider",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-group/package.json b/packages/mjml-group/package.json
index 7e77b9d8e..0cf0b8d59 100644
--- a/packages/mjml-group/package.json
+++ b/packages/mjml-group/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-group",
"description": "mjml-group",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-attributes/package.json b/packages/mjml-head-attributes/package.json
index 7f2935e90..59a1f6528 100644
--- a/packages/mjml-head-attributes/package.json
+++ b/packages/mjml-head-attributes/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-attributes",
"description": "mjml-head-attributes",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-breakpoint/package.json b/packages/mjml-head-breakpoint/package.json
index c88b03e52..2c50d9476 100644
--- a/packages/mjml-head-breakpoint/package.json
+++ b/packages/mjml-head-breakpoint/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-breakpoint",
"description": "mjml-head-breakpoint",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-font/package.json b/packages/mjml-head-font/package.json
index a8e201fcc..2f551b502 100644
--- a/packages/mjml-head-font/package.json
+++ b/packages/mjml-head-font/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-font",
"description": "mjml-head-font",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-html-attributes/package.json b/packages/mjml-head-html-attributes/package.json
index 7602037f2..50ca0ac9c 100644
--- a/packages/mjml-head-html-attributes/package.json
+++ b/packages/mjml-head-html-attributes/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-html-attributes",
"description": "mjml-head-html-attributes",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-preview/package.json b/packages/mjml-head-preview/package.json
index 86617b41f..fb4ca8c50 100644
--- a/packages/mjml-head-preview/package.json
+++ b/packages/mjml-head-preview/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-preview",
"description": "mjml-head-preview",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-style/package.json b/packages/mjml-head-style/package.json
index 1726531fc..8153fcbfa 100644
--- a/packages/mjml-head-style/package.json
+++ b/packages/mjml-head-style/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-style",
"description": "mjml-head-style",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head-title/package.json b/packages/mjml-head-title/package.json
index 50b2530ad..dd45eb2e6 100644
--- a/packages/mjml-head-title/package.json
+++ b/packages/mjml-head-title/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head-title",
"description": "mjml-head-title",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-head/package.json b/packages/mjml-head/package.json
index 7844af517..d64ef1541 100644
--- a/packages/mjml-head/package.json
+++ b/packages/mjml-head/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-head",
"description": "mjml-head",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-hero/package.json b/packages/mjml-hero/package.json
index 4507674fb..29ad917ea 100644
--- a/packages/mjml-hero/package.json
+++ b/packages/mjml-hero/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-hero",
"description": "mjml-hero",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-image/package.json b/packages/mjml-image/package.json
index ea891f7a7..d38cf871a 100644
--- a/packages/mjml-image/package.json
+++ b/packages/mjml-image/package.json
@@ -1,7 +1,7 @@
{
"name": "mjml-image",
"description": "mjml-image",
- "version": "4.15.3",
+ "version": "5.0.0-alpha.6",
"main": "lib/index.js",
"files": [
"lib"
@@ -23,7 +23,7 @@
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
- "mjml-core": "4.15.3"
+ "mjml-core": "5.0.0-alpha.6"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
diff --git a/packages/mjml-migrate/LICENSE b/packages/mjml-migrate/LICENSE
deleted file mode 100644
index db029841e..000000000
--- a/packages/mjml-migrate/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Nicolas Garnier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/packages/mjml-migrate/README.md b/packages/mjml-migrate/README.md
deleted file mode 100644
index fe4d5fadc..000000000
--- a/packages/mjml-migrate/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# mjml-migrate
-
-## Purpose
-
-Makes a template following the MJML 3 syntax compatible with MJML 4.
-
-## Installation
-
-Clone the repo & `npm install` or install via NPM: `npm install mjml-migrate`
-
-## Usage
-
-`migrate