Почему изменяется пространство имен, когда я использую npm для установки библиотеки?

#javascript #npm #webpack

#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. Не могли бы вы более четко объяснить, какое поведение ожидается или что именно вам непонятно? Изменение с window на global объект или содержимое package.json file ?

2. этот npm загружает файл в том виде, в каком его опубликовал автор

Ответ №1:

Я предполагаю, что вы пытаетесь запустить пакет npm (которые часто являются библиотеками для серверной части) во внешней части приложения. Это объясняет, почему window , который является глобальным объектом в браузере, изменяется после установки на global , который является глобальным объектом в Node.JS (серверная часть).

Когда я смотрю на страницу whammy, я вижу прямое использование интерфейса (без установки npm):

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

Таким образом, вы, вероятно, можете загрузить файл напрямую и использовать его на своем сайте таким образом.

Комментарии:

1. npm i является ли ярлык для npm install

2. Я почти дошел до того, что просто поместил файл в свой репозиторий. Я не вижу никаких признаков предстоящих обновлений для отслеживания прямо сейчас… но не понимать этого разочаровывает.

3. Вы проверили страницу Whamy на GitHub ? Может быть, это поможет.

4. да, но я не могу понять, почему изменился исходный код, по сути, в этом случае npm — это просто средство выполнения задач для git, поэтому нет причин что-либо менять, я уверен, что я что-то сделал, но пока я не вижу, что.