一文看清自己是不是真的掌握Package.json
Posted Vue中文社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文看清自己是不是真的掌握Package.json相关的知识,希望对你有一定的参考价值。
前言
scripts
这样写:
"dev": "rimraf \"config/.conf.json\" && rimraf \"src/next.config.js\" && cpx \".conf.json\" \"config/\" && nodemon server/index.ts",
"clean": "rimraf ./dist && mkdir dist",
"prebuild": "npm run clean",
"build": "cross-env NODE_ENV=production webpack"
复制代码
bin
"bin": {
"gynpm": "./bin/index.js"
}
复制代码
#!/usr/bin/env node
节点, 否则脚本将在没有节点可执行文件的情况下启动。
小实验
npm init -y
创建一个package.json文件。
{
"name": "cc",
"version": "1.0.0",
"description": "",
"main": "index.js",
"bin": {
"mason": "./index.js"
},
"scripts": {},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {}
}
复制代码
#!/usr/bin/env node
console.log( 'cool')
复制代码
sudo npm i -g
, window下:
npm i -g
mason
, 你讲看到
cool
字段。
bin
的作用。像我们常用的
vue-cli
,
create-react-app
等都是通过bin属性将命令映射到了全局上。
main
"main": "app.js"
复制代码
scripts
不同项目的脚本命令,只要功能相同,就可以有同样的对外接口。用户不需要知道怎么测试你的项目,只要运行npm run test即可。
可以利用 npm 提供的很多辅助功能。
复制代码
*通配符
*
表示任意文件名,
**
表示任意一层子目录。
"lint": "jshint *.js"
"lint": "jshint **/*.js"
复制代码
"test": "tap test/\*.js"
复制代码
脚本传参符号:--
"server": "webpack-dev-server --mode=development --open --iframe=true ",
复制代码
脚本执行顺序
&
符号
$ npm run script1.js & npm run script2.js
复制代码
&&
符号
$ npm run script1.js && npm run script2.js
复制代码
脚本钩子
"clean": "rimraf ./dist && mkdir dist",
"prebuild": "npm run clean",
"build": "cross-env NODE_ENV=production webpack"
复制代码
prepublish,postpublish
preinstall,postinstall
preuninstall,postuninstall
preversion,postversion
pretest,posttest
prestop,poststop
prestart,poststart
prerestart,postrestart
复制代码
拿到package.json的变量
// package.json
{
"name": "foo",
"version": "1.2.5",
"scripts": {
"view": "node view.js"
}
}
复制代码
console.log(process.env.npm_package_name); // foo
console.log(process.env.npm_package_version); // 1.2.5
复制代码
常用脚本
// 删除目录
"clean": "rimraf dist/*",
// 本地搭建一个 HTTP 服务
"serve": "http-server -p 9090 dist/",
// 打开浏览器
"open:dev": "opener http://localhost:9090",
// 实时刷新
"livereload": "live-reload --port 9091 dist/",
// 构建 html 文件
"build:html": "jade index.jade > dist/index.html",
// 只要 CSS 文件有变动,就重新执行构建
"watch:css": "watch 'npm run build:css' assets/styles/",
// 只要 HTML 文件有变动,就重新执行构建
"watch:html": "watch 'npm run build:html' assets/html",
// 部署到 Amazon S3
"deploy:prod": "s3-cli sync ./dist/ s3://example-com/prod-site/",
// 构建 favicon
"build:favicon": "node scripts/favicon.js",
复制代码
介绍几个在npm脚本中好用的模块
cpx全局复制
"copy": "cpx \".conf.json\" \"config/\" "
复制代码
npm run copy
就可以将根目录下的
.conf.json
文件拷贝到
config
文件夹下了, 如果没有config文件夹就会新建一个。
cpx "src/**/*.{html,png,jpg}" app --watch
复制代码
cross-env能跨平台地设置及使用环境变量
"start": "cross-env NODE_ENV=production node server/index.js",
复制代码
dependencies和devDependencies
npm i xxx -S
会放在dependencies,
npm i xxx -D
会放在devDependencies。所以我们在装包的时候一定要考虑这个包在线上是否用的到, 不要全都放到dependencies中,增加我们打包的体积和效率。
peerDependencies
"peerDependencies": {
"xxx1": "1.0.0",
"xxx2": "1.0.0",
}
复制代码
author, version, keywords, description
这些就很好理解了。
来源:https://juejin.im/post/5dea1095e51d4558083322e2
以上是关于一文看清自己是不是真的掌握Package.json的主要内容,如果未能解决你的问题,请参考以下文章