13 個(gè) 你應(yīng)該知道的 npm 快速開發(fā)技巧
來源 |?http://www.fly63.com/article/detial/4015
主要內(nèi)容
學(xué)習(xí)基本快捷方式 設(shè)置默認(rèn)npm?init屬性 讓腳本跨平臺(tái)兼容 并行運(yùn)行腳本 在不同的目錄中運(yùn)行腳本 延遲運(yùn)行腳本直到端口準(zhǔn)備就緒 列出并選擇可用腳本 運(yùn)行前后腳本 控制應(yīng)用程序版本 從命令行編輯package.json 自動(dòng)設(shè)置和打開你的github庫(kù) 自定義npm?init腳本 使用自定義npm?init腳本將你的第一個(gè) Commit 提交到 GitHub
1、學(xué)習(xí)基本快捷方式
安裝 ?—? 常規(guī):npm install,簡(jiǎn)寫:npm i。 測(cè)試 ?—? 常規(guī):npm test,簡(jiǎn)寫:npm t。 幫助 ?—? 常規(guī):npm --help,簡(jiǎn)寫:npm -h。 全局標(biāo)志 —? 常規(guī):?--global,簡(jiǎn)寫:-g。 保存為開發(fā)依賴 - 常規(guī):?- save-dev,簡(jiǎn)寫:-D。 npm init 默認(rèn)值 - 常規(guī):npm init --yes 或 npm init --force,簡(jiǎn)寫:npm init -y 或 npm init -f
不太常見的快捷鍵
安裝包信息將加入到optionalDependencies(可選階段的依賴)- 常規(guī):--save-optional, 簡(jiǎn)寫:-O。
精確安裝指定模塊版本 - 常規(guī):--save-optional, 簡(jiǎn)寫:-O。
根的快捷方式
{"main": "index.js"}
2、設(shè)置默認(rèn)npm init屬性
npm config set init.author.name "Joe Bloggs"npm config set init.author.email "[email protected]"npm config set init.author.url "Joebloggs.com"npm config set init.license "MIT"
echo "" > $(npm config get userconfig)npm config edit
echo "" > $(npm config get globalconfig)npm config --global edit
3、讓腳本跨平臺(tái)兼容
{"scripts": {"build": "cross-env NODE_ENV=production webpack --config build/wepack.config.js"}}
rimraf?可以安裝在全球運(yùn)行跨平臺(tái)腳本 ShellJS 是Unix shell命令在Node.js API上的可移植實(shí)現(xiàn)。
4、并行運(yùn)行腳本
{"start": "concurrently \"command1 arg\" \"command2 arg\""}
5、在不同的目錄中運(yùn)行腳本
cd folder && npm start && cd ..
npm start --prefix path/to/your/folder
"start": "concurrently \"(npm start --prefix client)\" \"(npm start --prefix server)\"",
6、延遲運(yùn)行腳本直到端口準(zhǔn)備就緒
"dev": "concurrently \"cross-env BROWSER=none npm run start\" \"wait-on http://localhost:3000 && electron .\"",
7、列出并選擇可用腳本
npm i -g ntl

8、運(yùn)行前后腳本
9、控制應(yīng)用程序版本
// 1.0.0npm version patch// 1.0.1npm version minor// 1.1.0npm version major// 2.0.0
{"predeploy": "npm version patch"}
10、從命令行編輯 package.json
npm install -g json
json -I -f package.json -e 'this.scripts.foo="bar"'
11、?自動(dòng)設(shè)置和打開你的github庫(kù)
git config --get remote.origin.url
json -I -f package.json -e "this.repository=\"$(git config --get remote.origin.url)\""
12、自定義npm init腳本
npm config set init-module ~\.npm-init.js
module.exports = {name: prompt('package name', basename || package.name),version: prompt('version', '0.0.0'),decription: prompt('description', ''),main: prompt('entry point', 'index.js'),repository: prompt('git repository', ''),keywords: prompt(function (s) { return s.split(/\s+/) }),author: prompt('author', 'Joe Bloggs(joebloggs.com)' ),license: prompt('license', 'ISC')}
13、使用自定義npm init腳本將你的第一個(gè) Commit 提交到 GitHub
const { execSync } = require('child_process');
function run(func) {console.log(execSync(func).toString())}
repository: prompt('github repository url', '', function (url) {if (url) {run('touch README.md');run('git init');run('git add README.md');run('git commit -m "first commit"');run(`git remote add origin ${url}`);run('git push -u origin master');}return url;})
const { execSync } = require('child_process');function run(func) {console.log(execSync(func).toString())}module.exports = {name: prompt('package name', basename || package.name),version: prompt('version', '0.0.0'),decription: prompt('description', ''),main: prompt('entry point', 'index.js'),keywords: prompt(function (s) { return s.split(/\s+/) }),author: prompt('author', 'Joe Bloggs(joebloggs.com)' ),license: prompt('license', 'ISC'),repository: prompt('github repository url', '', function (url) {if (url) {run('touch README.md');run('git init');run('git add README.md');run('git commit -m "first commit"');run(`git remote add origin ${url}`);run('git push -u origin master');}return url;}),}
{"name": "Custom npm init","version": "0.0.0","decription": "A test project, to demonstrate a custom npm init script.","main": "index.js","keywords": [],"author": "Joe Bloggs(joebloggs.com)" ,"license": "ISC","repository": {"type": "git","url": "git+https://github.com/JoeBloggs/custom.git"},"bugs": {"url": "https://github.com/JoeBloggs/custom/issues"},"homepage": "https://github.com/JoeBloggs/custom#readme"}
學(xué)習(xí)交流
關(guān)注公眾號(hào)【前端宇宙】,每日獲取好文推薦 添加微信,入群交流
評(píng)論
圖片
表情
