Skip to content

Instantly share code, notes, and snippets.

@ninetails
Created September 5, 2018 00:54
Show Gist options
  • Save ninetails/2b728199f2557247e326f0250a914b33 to your computer and use it in GitHub Desktop.
Save ninetails/2b728199f2557247e326f0250a914b33 to your computer and use it in GitHub Desktop.
Publishing transpiled npm package
const { promisify } = require('util')
const { readFile, writeFile } = require('fs')
const { join } = require('path')
const readFileAsync = promisify(readFile)
const writeFileAsync = promisify(writeFile)
const pkg = require('./package.json')
const packageJsonOutput = join(__dirname, 'dist', 'package.json')
const generatePackageJson = input => {
const copiedPkg = { ...input }
delete copiedPkg.scripts
delete copiedPkg.devDependencies
delete copiedPkg.private
return JSON.stringify(
{
...copiedPkg,
main: './index.js'
},
null,
2
)
}
Promise.all([
writeFileAsync(packageJsonOutput, `${generatePackageJson(pkg)}\n`),
readFileAsync(join(__dirname, 'README.md'), { encoding: 'utf8' })
.then(data => writeFileAsync(join(__dirname, 'dist', 'README.md'), data))
])
.then(() => console.log('done'))
.catch(err => {
throw err
})

Using Verdaccio

It's not possible to change directory to dist.

Publish

npm run dist -- --registry http://localhost:4873 --access restricted

Install

npm i @namespacek/package --registry http://localhost:4873
{
"name": "@namespace/package",
"version": "0.0.0",
"main": "src/index.js",
"license": "MIT",
"private": true,
"scripts": {
"clean": "rm -rf dist",
"build": "npm run clean && npm run transpile && node build.js",
"dist": "npm run build && cd dist && npm publish",
"transpile": "babel -d ./dist ./src"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment