ホームページ > ウェブフロントエンド > jsチュートリアル > NPM パッケージの作成 - ステップバイステップ

NPM パッケージの作成 - ステップバイステップ

DDD
リリース: 2024-09-13 12:31:02
オリジナル
989 人が閲覧しました

Create a NPM Package - Step by Step

Hello, developer community!

Today, I’m going to walk you through the steps to set up a JavaScript library from scratch, including configuring commit linting, Husky, and semantic release for smooth development and release processes. Let’s dive into it!

Demo

  1. Create a new project directory:
   mkdir new-project
   cd new-project
ログイン後にコピー
  1. Initialize a Git repository:
   git init
ログイン後にコピー
  1. Create a .gitignore file to exclude node_modules:
   echo "node_modules" > .gitignore
ログイン後にコピー
  1. Initialize a new Node.js project:
   npm init -y
ログイン後にコピー

Make sure to add "type": "module" to your package.json to enable ES6 modules.

  1. Set up commitlint to enforce consistent commit messages:
   npm install --save-dev @commitlint/{cli,config-conventional}
   echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
ログイン後にコピー
  1. Configure husky to ensure commits follow commitlint rules:
   npm install --save-dev husky
   npx husky init
   rm .husky/pre-commit
   echo "npx --no -- commitlint --edit \$1" > .husky/commit-msg
ログイン後にコピー
  1. Verify commitlint configuration:
   npx commitlint --from HEAD~1 --to HEAD --verbose
ログイン後にコピー
  1. Perform some test commits to check the configuration:
   git add .
   git commit -m "foo: this will fail" # This commit should fail
   git commit -m "chore: this will pass" # This commit should pass
ログイン後にコピー
  1. Install and configure semantic-release for automated versioning and releases:
   npm install --save-dev semantic-release
   npm install @semantic-release/git @semantic-release/changelog -D
ログイン後にコピー

Create the necessary directories and file for semantic-release:

   mkdir .github
   mkdir .github/workflows/
   touch .github/workflows/release.yml
ログイン後にコピー
  1. Tag the latest commit and push it to the repository:

    git log # Copy the GUID of the latest commit
    git tag v0.0.0 <COMMIT_GUID>
    git tag --contains <COMMIT_GUID>
    git push origin tag v0.0.0
    
    ログイン後にコピー
  2. Create a new NPM token and add it to your repository secrets.

  3. Install and configure Commitizen for consistent commit messages:

    npm install commitizen -g
    commitizen init cz-conventional-changelog --save-dev --save-exact
    
    ログイン後にコピー
  4. Install additional development tools like TypeScript, Jest, and Rollup:

    npm install --save-dev typescript @types/node jest ts-jest @types/jest
    npm install --save-dev rollup @rollup/plugin-typescript @rollup/plugin-terser
    npm install --save-dev rollup-plugin-dts
    
    ログイン後にコピー

    Create the Rollup configuration file (rollup.config.js):

    import terser from '@rollup/plugin-terser';
    import typescript from '@rollup/plugin-typescript';
    import dts from 'rollup-plugin-dts';
    
    export default [
      {
        input: 'src/index.ts',
        plugins: [
          typescript({ 
            tsconfig: './tsconfig.json',
            declaration: false,
            declarationDir: null,
          }),
          terser()
        ],
        output: [
          {
            file: 'dist/index.mjs',
            format: 'esm',
          },
          {
            file: 'dist/index.cjs',
            format: 'cjs',
            exports: 'named',
          },
        ]
      },
      {
        input: 'src/index.ts',
        plugins: [dts()],
        output: {
          file: 'dist/index.d.ts',
          format: 'es',
        },
      }
    ];
    
    ログイン後にコピー

And that’s it! You now have a fully configured project ready for developing and publishing your JavaScript library. If you have any questions or need further assistance, feel free to ask. Happy coding! ?

Best regards!

以上がNPM パッケージの作成 - ステップバイステップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート