clean-release
TypeScript icon, indicating that this package has built-in type declarations

2.18.0 • Public • Published

clean-release

Dependency Status devDependency Status Build Status: Windows Github CI npm version Downloads type-coverage

A CLI tool to copy files to be released into a tmp clean directory for npm publishing, electronjs packaging, docker image creation or deployment

install

yarn global add clean-release

usage

run clean-release or clean-release --config clean-release.config.js or clean-release --config clean-release.config.ts

options

key description
-config config file
-h,--help Print this message.
-v,--version Print the version
--only-changed-packages Only changed packages will bump.
--effected-packages The packages will be considered as effected packages.

config

key type description
include string[] the files included, support glob
exclude string[]? the files excluded, support glob
base string? the base path, eg: dist, then dist/foo/bar.js will be copied into foo as foo/bar.js
postScript postScript post script
releaseRepository string? used to publish to a git release repository, eg: https://github.com/plantain-00/baogame-release.git
releaseBranchName string? the branch name of the release repository
notClean boolean? if true, do not clean the tmp directory
askVersion boolean? if true, will ask promp version
changesGitStaged boolean? if true, will make sure all changes is git staged
execOptions childProcess.ExecOptions? passed to childProcess.exec
onlyChangedPackages boolean? if true, for monorepo, only bump changed packages

post script

postScript?: Script | Script[];

import type * as cleanScripts from 'clean-scripts'

type Script = string | ((context: Context) => cleanScripts.Script) | ((context: Context) => Promise<cleanScripts.Script>)

type Context = {
  dir: string
  version: string
  tag: string | undefined
  effectedWorkspacePaths?: string[][]
}

npm package demo

const { name, devDependencies: { electron: electronVersion } } = require('./package.json')

module.exports = {
  include: [
    'bin/*',
    'dist/**/*',
    'LICENSE',
    'package.json',
    'README.md'
  ],
  exclude: [
  ],
  askVersion: true,
  changesGitStaged: true,
  postScript: ({ dir, version }) => [
    'git add package.json',
    `git commit -m "${version}"`,
    `git tag v${version}`,
    'git push',
    `git push origin v${version}`,
    `cd "${dir}" && npm i --production`,
    `prune-node-modules "${dir}/node_modules"`,
    `electron-packager "${dir}" "${name}" --out=dist --arch=x64 --electron-version=${electronVersion} --platform=darwin --ignore="dist/"`,
    `electron-packager "${dir}" "${name}" --out=dist --arch=x64 --electron-version=${electronVersion} --platform=win32 --ignore="dist/"`,
    `7z a -r -tzip dist/${name}-darwin-x64-${version}.zip dist/${name}-darwin-x64/`,
    `7z a -r -tzip dist/${name}-win32-x64-$${version}.zip dist/${name}-win32-x64/`,
    `electron-installer-windows --src dist/${name}-win32-x64/ --dest dist/`,
    `cd dist && create-dmg ${name}-darwin-x64/${name}.app`
  ]
}

yarn workspaces demo

export default {
  include: [
    'packages/*/dist/*',
    'packages/*/package.json',
    'packages/*/README.md',
    'LICENSE',
    'package.json',
    'README.md'
  ],
  exclude: [
  ],
  askVersion: true,
  changesGitStaged: true,
  postScript: ({ dir, tag, version, effectedWorkspacePaths }) => [
    ...effectedWorkspacePaths.map((w) => w.map((e) => {
      return tag
        ? `npm publish "${dir}/${e}" --access public --tag ${tag}`
        : `npm publish "${dir}/${e}" --access public`
    })),
    `git commit -m "${version}"`,
    `git tag -a v${version} -m 'v${version}'`,
    'git push',
    `git push origin v${version}`
  ]
}

electronjs packaging demo

module.exports = {
  include: [
    'libs.js',
    'main.js',
    'config.js',
    'index.css',
    'scripts/index.js',
    'index.html',
    'LICENSE',
    'package.json',
    'README.md'
  ],
  exclude: [
  ],
  postScript: ({ dir }) => [
    `cd "${dir}" && npm i --production`,
    `electron-packager "${dir}" "news" --out=dist --arch=x64 --version=1.2.1 --app-version="1.0.8" --platform=darwin --ignore="dist/"`,
    `electron-packager "${dir}" "news" --out=dist --arch=x64 --version=1.2.1 --app-version="1.0.8" --platform=win32 --ignore="dist/"`
  ]
}

docker demo

module.exports = {
  include: [
    'dist/*.js',
    'static/protocol.proto',
    'static/scripts/*.bundle-*.js',
    'static/index.html',
    'LICENSE',
    'package.json',
    'README.md',
    'Dockerfile'
  ],
  exclude: [
  ],
  postScript: ({ dir }) => [
    `cd "${dir}" && docker build -t plantain/baogame . && docker push plantain/baogame`
  ]
}

change logs

# v2
cd "${dir}"

# v1
cd ${dir}

Readme

Keywords

none

Package Sidebar

Install

npm i clean-release

Weekly Downloads

32

Version

2.18.0

License

MIT

Unpacked Size

21.6 kB

Total Files

8

Last publish

Collaborators

  • plantain_00