npm 是什么?
node 与 npm 的关系
npm 是什么
npm 全称是 Node Package Manager ,意思是 Node 的包管理系统。是用来管理 js 的。
npm 的实现思路有一个远程代码仓库(registy),在里面存放所有需要被共享的 js 代码,每个 js 文件都有自己唯一标识
用户想使用某个 js 的时候,只需引用对应的标识,js 文件就会自动下载下来Node.js
Node.js 是什么Node.js 是一个 Javascript 运行环境(runtime environment),不是一个 js 文件
Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境,是用 C++ 写的
Node.js 不是库,是一个运行环境,或者说是一个 JS 语言解释器
我是一个后端工程师,最近接受了一个项目,其中包含了一些 vue 的内容
上手很简单,但是有些原理搞不明白
因为我看到 vue 中有很多代码都是 typescript 写的
而 nodejs 是跑 js 而不是 typescript 的吧?
但是我可以直接 npm run build
编译得到一段 dist 下的 js、css 等等静态文件
我本来以为是要先把 ts 相关的通过 tsc 之类的变成 js,再使用 npm 来编译
但是现在好像不需要 ts 转 js 这一步了,是 npm run build
帮我做了吗?
参考:testdrivenio/flask-vue-crud
package.json
文件内容
{
"name": "client",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.1",
"bootstrap": "^4.6.0",
"bootstrap-vue": "^2.21.2",
"core-js": "^3.6.5",
"vue": "^2.6.11",
"vue-router": "^3.2.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/eslint-config-airbnb": "^5.0.2",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-vue": "^6.2.2",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"@vue/airbnb"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
你可以看看npm的配置文件即package.json里面的script属性里的build命令,就知道npm run build到底做了什么。应该会有编译ts的命令,比如tsc,或者是执行一段脚本文件(来执行tsc)