使用节点JS从包.json获取名称属性

我想知道在 NodeJs 中是否有办法从我的项目文件中获取 name 属性:package.json


{

    "name": "bendiciones",

    "version": "1.12.0",

    "description": " bendiciones",

    "main": "main.js",

    "scripts": {

...

}

我试过


import {name} from './package.json';

import {name} from './app.json'

但我得到了错误:


TS2307: Cannot find module './package.json'.

TS2307: Cannot find module './app.json'.

我也尝试过:


 console.log ('--2>', process.env.npm_package_name);

但我得到undefined


慕后森
浏览 98回答 5
5回答

莫回无

我有类似的问题。作为解决方案,您应该添加自定义类型,即 与内容json-loader.d.tsdeclare module "*.json" {    const value: any;    export default value;}

幕布斯6054654

如果您使用的是类型脚本,这变得很容易:import pkg from '../path/to/package.json';pkg.name;它确实需要以下在你的:compilerOptionstsconfig.json{    "compilerOptions": {        "module": "commonjs",        "resolveJsonModule": true,        "esModuleInterop": true    }}

红糖糍粑

您可以浏览整个文件并选择所需的任何属性:requireconst packageJSON = require("path/to/your/package.json");console.log(packageJSON.name);

肥皂起泡泡

我也想做同样的事情,这是有效的代码。由于它用于加载 ,因此无论当前的工作目录如何,它都可以工作。requirepackage.jsonvar packageFile = require('./package.json'); console.log(packageFile);警告:请注意不要向客户端公开您的,因为这意味着您的所有依赖项版本号,构建和测试命令等都将发送到客户端。如果要在同一项目中生成服务器和客户端,则也会公开服务器端版本号。攻击者可以使用此类特定数据来更好地适应服务器上的攻击。package.json

素胚勾勒不出你

如果您使用的是没有加载器的纯 Javascript,则必须手动加载包 .json 文件:import { readFileSync } from "fs";// ./package.json is relative to the current fileconst packageJsonPath = require.resolve("./package.json");const packageJsonContents = readFileSync(packageJsonPath).toString();const packageJson = JSON.parse(packageJsonContents);console.log(packageJson.name);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript