Last active
August 29, 2015 13:56
-
-
Save colingourlay/9130246 to your computer and use it in GitHub Desktop.
unpackage.json - The crazy self-initialising opinionated app project. Put this into an empty directory and run `npm start`.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"dependencies": { | |
"browserify": "~3.30.1" | |
}, | |
"devDependencies": { | |
"clean-css": "~2.1.1", | |
"gazer": "0.0.3", | |
"myth": "~0.3.0", | |
"rework-npm-cli": "0.0.1", | |
"st": "~0.3.1", | |
"uglifyjs": "~2.3.6", | |
"watchify": "~0.6.1" | |
}, | |
"scripts": { | |
"build-assets": "rsync -a src/assets/ app", | |
"build-styles": "cd src/styles && rework-npm index.css | myth | cleancss -o ../../app/index.css", | |
"build-scripts": "browserify src/scripts/index.js | uglifyjs -mc > app/index.js", | |
"build": "npm run clean && npm run build-assets && npm run build-styles && npm run build-scripts", | |
"devbuild-assets": "rsync -av src/assets/ app", | |
"devbuild-styles": "cd src/styles && rework-npm index.css | myth -v > ../../app/index.css", | |
"devbuild-scripts": "browserify src/scripts/index.js -d -o app/index.js", | |
"devbuild": "npm run clean && npm run devbuild-assets && npm run devbuild-styles && npm run devbuild-scripts", | |
"watch-assets": "gazer -p src/assets/**/* npm run devbuild-assets", | |
"watch-styles": "gazer -p src/styles/**/* npm run devbuild-styles", | |
"watch-scripts": "watchify src/scripts/index.js -o app/index.js -dv", | |
"watch": "npm run watch-assets & npm run watch-styles & npm run watch-scripts", | |
"server": "st -d app -i index.html -p 8000", | |
"clean": "rm -rf app && mkdir app", | |
"dev": "npm run devbuild && npm run server & npm run watch", | |
"start": "echo ${PWD##*/} > README.md && echo 'node_modules\napp\nnpmdebug.log' > .gitignore && mkdir -p src/assets src/scripts src/styles && echo '<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t<title>:)</title>\n\t<meta name=\"description\" content=\"\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t<link rel=\"stylesheet\" href=\"/index.css\" />\n</head>\n<body>\n\t<script src=\"/index.js\"></script>\n</body>\n</html>' > src/assets/index.html && echo 'body { color: red; }' > src/styles/index.css && echo 'document.write(\":)\");' > src/scripts/index.js && sed -i .bak -e '30s/.*/ \"start\": \"npm install \\&\\& npm run dev\"/g' package.json && rm package.json.bak && npm init && npm start" | |
} | |
} |
Here's a one-liner to try in an empty directory in your console right now:
curl https://gist.githubusercontent.com/colingourlay/9130246/raw/13c8cec9af9e6f833f3a036020d6918d1ba54f09/package.json > package.json && npm start
No sudo
. So you can totally trust me.
This is a rather convoluted way of using npm start
to generate a project directory and get up and running. There're a million other ways to do this that are nowhere near as archaic.
I guess, if I'm crazy enough to put an entire project directory into an npm script, I may as well put the entire eventual package.json
file in there too.
I present the updated (and even more silly) package.json
:
{
"scripts": {
"start": "echo ${PWD##*/} > README.md && echo 'node_modules\napp\nnpmdebug.log' > .gitignore && mkdir -p src/assets src/scripts src/styles && echo '<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t<title>:)</title>\n\t<meta name=\"description\" content=\"\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t<link rel=\"stylesheet\" href=\"/index.css\" />\n</head>\n<body>\n\t<script src=\"/index.js\"></script>\n</body>\n</html>' > src/assets/index.html && echo 'body { color: red; }' > src/styles/index.css && echo 'document.write(\":)\");' > src/scripts/index.js && echo '{\n \"dependencies\": {\n \"browserify\": \"~3.30.1\"\n },\n \"devDependencies\": {\n \"clean-css\": \"~2.1.1\",\n \"gazer\": \"0.0.3\",\n \"myth\": \"~0.3.0\",\n \"rework-npm-cli\": \"0.0.1\",\n \"st\": \"~0.3.1\",\n \"uglifyjs\": \"~2.3.6\",\n \"watchify\": \"~0.6.1\"\n },\n \"scripts\": {\n \"build-assets\": \"rsync -a src/assets/ app\",\n \"build-styles\": \"cd src/styles && rework-npm index.css | myth | cleancss -o ../../app/index.css\",\n \"build-scripts\": \"browserify src/scripts/index.js | uglifyjs -mc > app/index.js\",\n \"build\": \"npm run clean && npm run build-assets && npm run build-styles && npm run build-scripts\",\n \"devbuild-assets\": \"rsync -av src/assets/ app\",\n \"devbuild-styles\": \"cd src/styles && rework-npm index.css | myth -v > ../../app/index.css\",\n \"devbuild-scripts\": \"browserify src/scripts/index.js -d -o app/index.js\",\n \"devbuild\": \"npm run clean && npm run devbuild-assets && npm run devbuild-styles && npm run devbuild-scripts\",\n \"watch-assets\": \"gazer -p src/assets/**/* npm run devbuild-assets\",\n \"watch-styles\": \"gazer -p src/styles/**/* npm run devbuild-styles\",\n \"watch-scripts\": \"watchify src/scripts/index.js -o app/index.js -dv\",\n \"watch\": \"npm run watch-assets & npm run watch-styles & npm run watch-scripts\",\n \"server\": \"st -d app -i index.html -p 8000\",\n \"clean\": \"rm -rf app && mkdir app\",\n \"dev\": \"npm run devbuild && npm run server & npm run watch\",\n \"start\": \"npm install && npm run dev\"\n }\n}\n' > package.json && npm init && npm start"
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The first time you run
npm start
, it unpacks the project files and replaces itself with the newnpm start
.It then and runs
npm init
for you to set up basic project stuff.Finally, it runs the new
npm start
which runsnpm install
, thennpm run dev
, so you can get to work.