为什么在我使用npm安装lib时更改名称空间?

时间:2019-04-03 11:13:46

标签: javascript npm webpack

我正在尝试在项目中使用whammy.js。 资料的第一行是

window.Whammy = (function(){

但是当我运行npm i并查看node_modules时,我会看到

global.Whammy = (function(){

https://github.com/antimatter15/whammy/blob/master/whammy.js

{
...
    "dependencies": {
        "cordova": "^9.0.0",
        "react": "^16.8.5",
        "react-redux": "^5.0.6",
        "redux": "^4.0.1",
        "redux-actions": "^2.2.1",
        "redux-thunk": "^2.2.0",
        "whammy": "0.0.1"
    },
    "devDependencies": {
        "@babel/core": "^7.4.0",
        "@babel/preset-env": "^7.4.2",
        "@babel/preset-react": "^7.0.0",
        "babel-loader": "^8.0.5",
        "copy-webpack-plugin": "^5.0.2",
        "cordova-browser": "^6.0.0",
        "del": "^4.0.0",
        "enzyme": "^3.9.0",
        "enzyme-adapter-react-16": "^1.11.2",
        "enzyme-to-json": "^3.3.5",
        "gulp": "^4.0.0",
        "gulp-cli": "^2.0.1",
        "gulp-jest": "^4.0.2",
        "gulp-run": "^1.7.1",
        "gulp-sass": "^4.0.2",
        "jest-cli": "^24.5.0",
        "jest-dom": "^3.1.3",
        "node-sass": "^4.11.0",
        "react-dom": "^16.8.5",
        "react-testing-library": "^6.0.2",
        "webpack": "^4.29.6",
        "webpack-cli": "^3.3.0",
        "webpack-stream": "^5.2.1"
    },
    "cordova": {
        "plugins": {
            "cordova-plugin-android-permissions": {},
            "cordova-plugin-crosswalk-webview": {
                "XWALK_VERSION": "21+",
                "XWALK_LITEVERSION": "xwalk_core_library_canary:17+",
                "XWALK_COMMANDLINE": "--disable-pull-to-refresh-effect",
                "XWALK_MODE": "embedded",
                "XWALK_MULTIPLEAPK": "true"
            },
            "cordova-plugin-geolocation": {},
            "cordova-plugin-whitelist": {}
        },
        "platforms": [
            "browser"
        ]
    },
    "jest": {
        "verbose": true,
        "globals": {
            "cordova": {}
        },
        "collectCoverageFrom": [
            "source/**/*.{js,jsx,ts,tsx}",
            "!<rootDir>/node_modules/"
        ],
        "coverageThreshold": {
            "global": {
                "branches": 90,
                "functions": 90,
                "lines": 90,
                "statements": 90
            }
        },
        "coverageReporters": [
            "text"
        ],
        "snapshotSerializers": [
            "enzyme-to-json/serializer"
        ]
    }
}

有人知道这样做是什么吗/为什么会发生? 我对webpack的猜测并不能说服我,因为它还没到使用它的地步。

1 个答案:

答案 0 :(得分:0)

我的猜测是,您正在尝试在应用程序的前端部分运行npm软件包(通常是后端的库)。这就可以解释为什么浏览器中的全局对象window安装到Node.JS(后端)中的全局对象global之后会更改。

当我查看whammy页面时,我直接看到了前端的用法(没有安装npm):

<script src="whammy.js"></script>

因此,您可以直接下载文件,然后在站点上使用它。