Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

inject-project-info

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

inject-project-info

一个工具类插件。别提供了webpack 插件版本和vite 插件版本。打包项目时注入git仓库信息和打包时间等,可在控制台日志查看,方便定位版本问题。

  • 0.1.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

inject-project-info

一个工具类插件,分别提供了 webpack 插件 版本和vite 插件版本。打包项目时自动注入项目打包信息,可在控制台日志查看,方便定位版本问题。项目打包信息包括:git 仓库信息、打包时间和用户指定的任意信息。

😈 前提: 在配置文件中引入使用插件,打包项目时(npm run build),插件会自动将项目信息的代码通过 scirpt 标签动态注入到打包产物的 html 中。所以也要求业务代码的打包产物是有 html 文件的。(业务项目都有吧 😏。。。)

INSTALL

 // npm
 npm i inject-project-info -D
 // pnpm
 pnpm add inject-project-info -D

USAGE

结合打包工具 webpack 和 vite 使用,分别提供对应的插件。

export interface Options {
  isLog?: boolean;
  timeout?: boolean | number;
  isLogLastCommitMessage?: boolean;
  extraLogInfo?: IExtraLogInfo[];
}

export interface IExtraLogInfo {
    label: string;
    value: string;
}

// webpack plugin
new InjectProjectInfoWebpackPlugin(options: Options),
// vite plugin
injectProjectInfoVitePlugin(options: Options),

1. 结合 webpack 使用

1.1. webpack 构建的项目使用示例:
// webpack.config.js (webpack配置文件)

const InjectProjectInfoWebpackPlugin = require('inject-project-info/webpack');

module.exports = {
  // ...其他配置
  plugins: [
    new InjectProjectInfoWebpackPlugin({
      isLog: process.env.NODE_ENV !== 'development', // 只在生产模式注入项目信息
    }),
  ],
};
1.2. vue-cli 创建的项目(底层也是基于 webpack 构建工具)使用示例:
// vue.config.js (配置文件)

const InjectProjectInfoWebpackPlugin = require("inject-project-info/webpack");

module.exports = {
  // ...其他配置
  configureWebpack: () => {
    new InjectProjectInfoWebpackPlugin({
      isLog: process.env.NODE_ENV !== "development", // 只在生产模式注入项目信息
    }),
  },
};
2. 结合 vite 使用
vite 构建的项目使用示例:
// vite.config.js (vite配置文件)

import { defineConfig } from 'vite';
import injectProjectInfoVitePlugin from 'inject-project-info/vite';

export default defineConfig({
  // ...其他配置
  plugins: [
    injectProjectInfoVitePlugin({
      isLog: !process.argv.includes('development'), // 只在生产模式注入项目信息。
    }),
  ],
});

特别说明:因为 vite 项目在 vite.config.js 获取 process.env.NODE_ENV 为 undefined,需要使用其他方法判断是否是生产环境。 可使用 cross-env 定义环境变量,或更简单点,在 package.json 的生产构建命令,必须显示指定--mode prodution 参数,则使用 process.argv.includes('production')判断是否是生产环境。示例如下:

// package.json示例
{
  "scripts": {
    "dev": "vite --mode development",
    "build": "vue-tsc && vite build --mode production",
    "preview": "vite preview"
  }
}

参数说明

options

参数名称说明类型默认值
isLog控制插件是否注入项目打包信息,并打印到控制台。
推荐在生产环境开启,开发环境关闭
booleantrue
timeout控制控制台是否延迟打印打包信息。传 false 可关闭,传数值设置延迟 x(ms)打印boolean 或 number2000
isLogLastCommitMessage是否打印最新提交记录的 commit message。考虑信息敏感原因建议关闭booleanfalse
extraLogInfo用户额外指定的打印信息。比如有维护 package.json 的版本号的项目,可打印当前 package.json 的版本号IExtraLogInfo[][]

extraLogInfo

参数名称说明类型默认值
label信息左边标题string''
value信息右边内容string''

效果

包括以下信息:

  • 项目名称 -> git 分支
  • 最近一次提交记录:提交人 -> 提交时间(commit message 可能为敏感信息不建议不展示)。
  • 打包时间
  • 用户额外指定的打印信息

下方代码示例及其对应的效果图展示如下:

new InjectProjectInfoWebpackPlugin({
  timeout: 3000, // 延迟3s打印
  isLog: process.env.NODE_ENV !== "development", // 只在开发环境开启
  // isLogLastCommitMessage: true,
  extraLogInfo: [ // 用户额外指定的打印信息
    {
      label: "Version",
      value: require("./package.json").version,
    },
    {
      label: "其他信息",
      value: "需要打印什么就打印什么",
    },
  ],
}),

Todos

  1. 内置实现打印项目构建依赖实际版本。
  2. commit 信息打印 commit hash

Keywords

FAQs

Package last updated on 17 Nov 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc