sedn-interfaces v0.69.0
Sedn Interfaces
TL;DR to publish:
- Change code && merge changes
- Go to https://github.com/ngmi2022/sedn-interfaces/actions/workflows/release_package.yml
- Click "Run Workflow" and select what kind of fix you made
Development
Install dependencies
Install dependencies with npm:
npm iTest
Test your code with Jest framework:
npm run testNote: Example TypeScript Package uses husky, pinst and commitlint to automatically execute test and lint commit message before every commit.
Build
Build production (distribution) files in your dist folder:
npm run buildIt generates CommonJS (in dist/cjs folder), ES Modules (in dist/esm folder), bundled and minified UMD (in dist/umd folder), as well as TypeScript declaration files (in dist/types folder).
Try it before publishing
Run:
npm linknpm link will create a symlink in the global folder, which may be {prefix}/lib/node_modules/sedn-interfaces or C:\Users\\AppData\Roaming\npm\node_modules\sedn-interfaces.
Create an empty folder elsewhere, you don't even need to npm init (to generate package.json). Open the folder with VS Code, open a terminal and just run:
npm link sedn-interfacesIf you don't see any linting errors in VS Code, if you put your mouse cursor over Num and see its type, then it's all good.
Whenever you want to uninstall the globally-installed sedn-interfaces and remove the symlink in the global folder, run:
npm uninstall sedn-interfaces -gPrepare to publish
Create an npm account.
Manual publishing to npm
Log in:
npm adduserAnd publish:
npm publishThis package is configured to use GitHub Actions CI/CD to automate both the npm and GitHub Packages publishing process. The following are what you have to do.
CI publishing to npm
Follow npm's official instruction to create an npm token. Choose "Publish" from the website, or use npm token create without argument with the CLI.
If you use 2FA, then make sure it's enabled for authorization only instead of authorization and publishing (Edit Profile -> Modify 2FA).
On the page of your newly created or existing GitHub repo, click Settings -> Secrets -> New repository secret, the Name should be NPM_TOKEN and the Value should be your npm token.
CI publishing to GitHub Packages
The default configuration of this example package assumes you publish package with an unscoped name to npm. GitHub Packages must be named with a scope name such as "@tomchen/sedn-interfaces".
Change scope: '@tomchen' to your own scope in .github/workflows/publish.yml, also change addscope in package.json.
If you publish package with a scoped name to npm, change the name to something like "@tomchen/sedn-interfaces" in package.json, and remove the - run: npm run addscope line in .github/workflows/publish.yml
If you publish your package to npm only, and don't want to publish to GitHub Packages, then delete the lines from - name: Setup .npmrc file to publish to GitHub Packages to the end of the file in .github/workflows/publish.yml.
(You might have noticed secret.GITHUB_TOKEN in .github/workflows/publish.yml. You don't need to set up a secret named GITHUB_TOKEN actually, it is automatically created)
Publish
Now everything is set. The example package has automated tests and upload (publishing) already set up with GitHub Actions:
- Every time you
git pushor a pull request is submitted on yourmasterormainbranch, the package is automatically tested against the desired OS and Node.js versions with GitHub Actions. - Every time an annotated (not lightweight) "v*" tag is pushed onto GitHub, a GitHub release is automatically generated from this version, it also automatically publishes to the npm registry and/or GitHub Packages registry to update the package there.
npm version/yarn versionis useful to create tags.- (npm or yarn v1, not yarn v2) You could also add
"postversion": "git push --follow-tags"to package.json file to push it automatically afternpmoryarnversion. - (yarn v1, not v2) because
yarn versiondoesn't check whether there are uncommitted changes, you can add"preversion": "git diff-index --quiet HEAD --"to package.json- Note:
preversion,postversiondoesn't work in yarn v2
- Note:
For npm registry: you can unpublish a version or the whole package but can never re-publish the same version under the same name.
If you want to modify the description / README on the npm package page, you have to publish a new version. You can modify the description on GitHub Packages without publishing.
Notes
- It uses npm but you can easily switch to yarn, of course (remember to change all "npm" in
scriptsin the file package.json)- Whether you use npm as your package manager ≠ Whether you can publish to the npm registry
- Works fine in VS Code. In my configuration .eslintrc and .prettierrc cooperate perfectly
- See
scriptsin package.json for other predefined script commands - pinst is used to solve a problem of husky
- The installation of the package with npm, yarn v1 and yarn v2+ is ensured in this test
References
- Creating and publishing unscoped public packages - npm docs
- npm-publish - npm docs
- Publishing - TypeScript docs
- Publishing Node.js packages - GitHub Docs
Btw, if you want to publish Python package, go to Example PyPI (Python Package Index) Package & Tutorial / Instruction / Workflow for 2021.
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago