diff --git a/config/changelog.yaml b/config/changelog.yaml index 1147bbd64a8..7c309d1f2f4 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,5 +1,8 @@ Unreleased: date: + Fixed: + create-freesewing-pattern: + - Fixed breaking change in execa upgrade in 2.8.0 2.8.0: date: 2020-08-10 diff --git a/packages/create-freesewing-pattern/lib/cli.js b/packages/create-freesewing-pattern/lib/cli.js index 4004d4014b0..bd1baab8a82 100644 --- a/packages/create-freesewing-pattern/lib/cli.js +++ b/packages/create-freesewing-pattern/lib/cli.js @@ -94,10 +94,10 @@ ${strings[params.language]['cfp.runTheseCommands']}: ${strings[params.language]['cfp.devDocsAvailableAt']} - ${chalk.bold('https://' + params.language + '.freesewing.dev/')} + ${chalk.bold('https://freesewing.dev/')} ${strings[params.language]['cfp.talkToUs']} - ${chalk.bold('https://gitter.im/freesewing/freesewing')} + ${chalk.bold('https://gitter.im/freesewing/development')} `) diff --git a/packages/create-freesewing-pattern/lib/create-library.js b/packages/create-freesewing-pattern/lib/create-library.js index 9add8cc1d16..24f24b263c4 100644 --- a/packages/create-freesewing-pattern/lib/create-library.js +++ b/packages/create-freesewing-pattern/lib/create-library.js @@ -1,96 +1,94 @@ -"use strict"; +'use strict' -const handlebars = require("handlebars"); -const execa = require("execa"); -const fs = require("fs"); -const globby = require("globby"); -const mkdirp = require("make-dir"); -const ora = require("ora"); -const path = require("path"); -const pEachSeries = require("p-each-series"); +const handlebars = require('handlebars') +const execa = require('execa') +const fs = require('fs') +const globby = require('globby') +const mkdirp = require('make-dir') +const ora = require('ora') +const path = require('path') +const pEachSeries = require('p-each-series') -const pkg = require("../package"); +const pkg = require('../package') -const templateBlacklist = new Set([ - path.join("example", "public", "favicon.ico") -]); +const templateBlacklist = new Set([path.join('example', 'public', 'favicon.ico')]) -module.exports = async info => { - const { manager, template, name, templatePath, git } = info; +module.exports = async (info) => { + const { manager, template, name, templatePath, git } = info // handle scoped package names - const parts = name.split("/"); - info.shortName = parts[parts.length - 1]; + const parts = name.split('/') + info.shortName = parts[parts.length - 1] - const dest = path.join(process.cwd(), info.shortName); - info.dest = dest; - await mkdirp(dest); + const dest = path.join(process.cwd(), info.shortName) + info.dest = dest + await mkdirp(dest) const source = - template === "custom" + template === 'custom' ? path.join(process.cwd(), templatePath) - : path.join(__dirname, "..", "template", template); + : path.join(__dirname, '..', 'template', template) const files = await globby(source, { dot: true - }); + }) { - const promise = pEachSeries(files, async file => { + const promise = pEachSeries(files, async (file) => { return module.exports.copyTemplateFile({ file, source, dest, info - }); - }); - ora.promise(promise, `Copying ${template} template to ${dest}`); - await promise; + }) + }) + ora.promise(promise, `Copying ${template} template to ${dest}`) + await promise } { - const promise = module.exports.initPackageManager({ dest, info }); - ora.promise(promise, `Running ${manager} install and ${manager} link`); - await promise; + const promise = module.exports.initPackageManager({ dest, info }) + ora.promise(promise, `Running ${manager} install and ${manager} link`) + await promise } if (git) { - const promise = module.exports.initGitRepo({ dest }); - ora.promise(promise, "Initializing git repo"); - await promise; + const promise = module.exports.initGitRepo({ dest }) + ora.promise(promise, 'Initializing git repo') + await promise } - return dest; -}; + return dest +} -module.exports.copyTemplateFile = async opts => { - const { file, source, dest, info } = opts; +module.exports.copyTemplateFile = async (opts) => { + const { file, source, dest, info } = opts - const fileRelativePath = path.relative(source, file); - const destFilePath = path.join(dest, fileRelativePath); - const destFileDir = path.parse(destFilePath).dir; + const fileRelativePath = path.relative(source, file) + const destFilePath = path.join(dest, fileRelativePath) + const destFileDir = path.parse(destFilePath).dir - await mkdirp(destFileDir); + await mkdirp(destFileDir) if (templateBlacklist.has(fileRelativePath)) { - const content = fs.readFileSync(file); - fs.writeFileSync(destFilePath, content); + const content = fs.readFileSync(file) + fs.writeFileSync(destFilePath, content) } else { - const template = handlebars.compile(fs.readFileSync(file, "utf8")); + const template = handlebars.compile(fs.readFileSync(file, 'utf8')) const content = template({ ...info, - yarn: info.manager === "yarn" - }); + yarn: info.manager === 'yarn' + }) - fs.writeFileSync(destFilePath, content, "utf8"); + fs.writeFileSync(destFilePath, content, 'utf8') } - return fileRelativePath; -}; + return fileRelativePath +} -module.exports.initPackageManager = async opts => { - const { dest, info } = opts; +module.exports.initPackageManager = async (opts) => { + const { dest, info } = opts - const example = path.join(dest, "example"); + const example = path.join(dest, 'example') const commands = [ { @@ -105,17 +103,17 @@ module.exports.initPackageManager = async opts => { cmd: `${info.manager} install`, cwd: example } - ]; + ] return pEachSeries(commands, async ({ cmd, cwd }) => { - return execa.shell(cmd, { cwd }); - }); -}; + return execa.sync(cmd, { cwd, shell: true }) + }) +} -module.exports.initGitRepo = async opts => { - const { dest } = opts; +module.exports.initGitRepo = async (opts) => { + const { dest } = opts - const gitIgnorePath = path.join(dest, ".gitignore"); + const gitIgnorePath = path.join(dest, '.gitignore') fs.writeFileSync( gitIgnorePath, ` @@ -141,11 +139,9 @@ npm-debug.log* yarn-debug.log* yarn-error.log* `, - "utf8" - ); + 'utf8' + ) - const cmd = `git init && git add . && git commit -m ":tada: Initialized ${ - pkg.name - }@${pkg.version} with create-freesewing-pattern"`; - return execa.shell(cmd, { cwd: dest }); -}; + const cmd = `git init && git add . && git commit -m ":tada: Initialized ${pkg.name}@${pkg.version} with create-freesewing-pattern"` + return execa.sync(cmd, { cwd: dest, shell: true }) +} diff --git a/packages/create-freesewing-pattern/template/default/package.json b/packages/create-freesewing-pattern/template/default/package.json index 70190050ff2..41af8e5e663 100644 --- a/packages/create-freesewing-pattern/template/default/package.json +++ b/packages/create-freesewing-pattern/template/default/package.json @@ -40,8 +40,10 @@ "rollup-plugin-peer-deps-external": "^2.2.3", "rollup-plugin-terser": "^6.1.0", "rollup-plugin-yaml": "^2.0.0", + "rollup-plugin-postcss": "^3.1.5", "@rollup/plugin-babel": "^5.1.0", "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-url": "^5.0.1", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^8.4.0", "@material-ui/core": "^4.11.0", diff --git a/packages/create-freesewing-pattern/template/default/rollup.config.js b/packages/create-freesewing-pattern/template/default/rollup.config.js index 70c428bd463..12daa00ef4f 100644 --- a/packages/create-freesewing-pattern/template/default/rollup.config.js +++ b/packages/create-freesewing-pattern/template/default/rollup.config.js @@ -1,47 +1,47 @@ -import babel from "rollup-plugin-babel"; -import commonjs from "rollup-plugin-commonjs"; -import external from "rollup-plugin-peer-deps-external"; -import postcss from "rollup-plugin-postcss"; -import json from "rollup-plugin-json"; -import resolve from "rollup-plugin-node-resolve"; -import url from "rollup-plugin-url"; -import svgr from "@svgr/rollup"; -import minify from "rollup-plugin-babel-minify"; -import { name, version, description, author, license } from "./package.json"; +import url from '@rollup/plugin-url' +import babel from '@rollup/plugin-babel' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import { terser } from 'rollup-plugin-terser' +import peerDepsExternal from 'rollup-plugin-peer-deps-external' +import postcss from 'rollup-plugin-postcss' +import { name, version, description, author, license } from './package.json' -import pkg from "./package.json"; +import pkg from './package.json' export default { - input: "src/index.js", + input: 'src/index.js', output: [ { file: pkg.main, - format: "cjs", - sourcemap: true + format: 'cjs', + sourcemap: true, + exports: 'default' }, { file: pkg.module, - format: "es", - sourcemap: true + format: 'es', + sourcemap: true, + exports: 'default' } ], plugins: [ - external(), + peerDepsExternal(), postcss({ modules: true }), - url({ exclude: ["**/*.svg"] }), - svgr(), + url({ exclude: ['**/*.svg'] }), babel({ - exclude: "node_modules/**" + exclude: 'node_modules/**' }), resolve({ browser: true }), json(), commonjs(), - minify({ - comments: false, - sourceMap: true, - banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` + terser({ + output: { + preamble: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` + } }) ] -}; +}