Jenkins to Gitlab - Intelligent Build-PipelinesChristian Münch
At netz98 we moved from Jenkins to Gitlab. The slides show some insides about Testing of PHP libraries, Magento 1 and Magento 2 modules. How to setup a scalable and fast Gitlab-Pipeline with Docker images.
ZendCon 2015 - Laravel Forge: Hello World to Hello ProductionJoe Ferguson
With the recent release of Laravel Forge, Envoyer and Homestead, it has never been easier to go from nothing to something with an easy to use PHP Framework. This talk will cover creating a basic Laravel application using the Laravel specific Vagrant box "Homestead", connecting to a server (Linode, Rackspace, Digital Ocean), and deploying the application via Forge. The talk will also cover tips and tricks on customizing Homestead to fit custom needs as well as how to use Forge & Envoyer to deploy new versions of our application.
In this advanced session, we will investigate all the ways that you can automate your testing processes with TestBox and many CI and automation tools. From Jenkins integration, Travis CI, Node runners, Grunt watchers and much more. This session will show you the value of continuous integration and how to apply it with modern tools and technologies.
Main Points
Why we want to automate
Continuous Integration
ANT/CommandBox Test Runner
Setup of a Jenkins CI server
Travis CI integration
Pipelines CI integration
Node TestBox Runners
Grunt Watchers and Browser Live Reloads
Made for T3DD19
Every developer has made the experience that new changes to a project end up breaking existing code. In a worst-case scenario, these new errors sneak into the production system unnoticed.
In order to ensure that your website works, ideally before deploying the code, you should implement automated tests. While most developers are very familiar with functional and unit tests, they often shy away from frontend tests.
I want you show you how easy it can be to set up and run browser-based tests with codeception. This way, you can rest assured that your frontend doesn't break without you noticing.
Continuous Integration, the minimum viable productJulian Simpson
What does it mean to 'do' Continuous Integration? It used to be enough to execute your unit tests in CI. But the bar is steadily raising for engineering practices. In the last decade we've seen tremendous improvements inacceptance testing. JavaScript is now a platform in it's own right. Cloudcomputing is now vital. There's growing interest in deployment to prod.So Continuous Integration is under more pressure than ever. As the bar slowly raises for engineering practices, we ll present 2011's minimum viable feature set for Continuous Integration
Jenkins to Gitlab - Intelligent Build-PipelinesChristian Münch
At netz98 we moved from Jenkins to Gitlab. The slides show some insides about Testing of PHP libraries, Magento 1 and Magento 2 modules. How to setup a scalable and fast Gitlab-Pipeline with Docker images.
ZendCon 2015 - Laravel Forge: Hello World to Hello ProductionJoe Ferguson
With the recent release of Laravel Forge, Envoyer and Homestead, it has never been easier to go from nothing to something with an easy to use PHP Framework. This talk will cover creating a basic Laravel application using the Laravel specific Vagrant box "Homestead", connecting to a server (Linode, Rackspace, Digital Ocean), and deploying the application via Forge. The talk will also cover tips and tricks on customizing Homestead to fit custom needs as well as how to use Forge & Envoyer to deploy new versions of our application.
In this advanced session, we will investigate all the ways that you can automate your testing processes with TestBox and many CI and automation tools. From Jenkins integration, Travis CI, Node runners, Grunt watchers and much more. This session will show you the value of continuous integration and how to apply it with modern tools and technologies.
Main Points
Why we want to automate
Continuous Integration
ANT/CommandBox Test Runner
Setup of a Jenkins CI server
Travis CI integration
Pipelines CI integration
Node TestBox Runners
Grunt Watchers and Browser Live Reloads
Made for T3DD19
Every developer has made the experience that new changes to a project end up breaking existing code. In a worst-case scenario, these new errors sneak into the production system unnoticed.
In order to ensure that your website works, ideally before deploying the code, you should implement automated tests. While most developers are very familiar with functional and unit tests, they often shy away from frontend tests.
I want you show you how easy it can be to set up and run browser-based tests with codeception. This way, you can rest assured that your frontend doesn't break without you noticing.
Continuous Integration, the minimum viable productJulian Simpson
What does it mean to 'do' Continuous Integration? It used to be enough to execute your unit tests in CI. But the bar is steadily raising for engineering practices. In the last decade we've seen tremendous improvements inacceptance testing. JavaScript is now a platform in it's own right. Cloudcomputing is now vital. There's growing interest in deployment to prod.So Continuous Integration is under more pressure than ever. As the bar slowly raises for engineering practices, we ll present 2011's minimum viable feature set for Continuous Integration
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
Fine-tuning your development environment means more than just getting your editor set up just so -- it means finding and setting up a variety of tools to take care of the mundane housekeeping chores that you have to do -- so you have more time to program, of course! I'll share the benefits of a number of yak shaving expeditions, including using App::GitGot to batch manage _all_ your git repos, App::MiseEnPlace to automate getting things _just_ so in your working environment, and a few others as time allows.
Delivered at OpenWest 2016, 13 July 2016
Quando desenvolvemos uma aplicação, é importante executarmos testes para garantir o funcionamento dos diferentes módulos da aplicação. Este slide foi apresentado na trilha Javascript do TDC 2016 em São Paulo.
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016Gavin Pickin
Everyone who wasn't writing JavaScript, probably is now. Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.
That's great, but how do we test it? In ColdFusion we have CFCs, most languages have classes... but JavaScript doesn't have classes (yet).
So how do I write unit tests, what units are there, and how do I make my code look like that? JavaScript is a flexible language, and with great flexibility comes great complexity and responsibility. Take your JavaScript spaghetti and make it unit testable.
Attendees should have some exposure to JavaScript, but this is for the Professional Newbie... who always needs to learn and adapt.
A hands-on workshop that covers 18 best practices in 4 categories or in other words ✅️ Dos & Don'ts.
After a general introduction, we will have a look at the essential practices (aka must do), then move to the image practices, then we will go through the security practices, and finally, some general practices.
Please note, this workshop assumes that you have a basic knowledge of Docker.
Hands-on repo:
https://github.com/aabouzaid/docker-best-practices-workshop
In this advanced session, we will investigate all the ways that you can automate your testing processes with TestBox and many CI and automation tools. From Jenkins integration, Travis CI, Node runners, Grunt watchers and much more. This session will show you the value of continuous integration and how to apply it with modern tools and technologies.
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
ContainerCon - Test Driven InfrastructureYury Tsarev
Great external coverage of this presentation can be found at https://www.cedric-meury.ch/2016/10/test-driven-infrastructure-with-puppet-docker-test-kitchen-and-serverspec-yury-tsarev-gooddata/
CommandBox is the ColdFusion (CFML) CLI and package manager for modern applications. In this session, we will show you how to create, find and even publish packages to our centralized cloud repository, ForgeBox.
Main Points
What is CommandBox + ForgeBox?
How to create packages
Understanding packages and dependencies
How to find packages
Publishing to ForgeBox
A compare and contrast of Continuous Integration testing tools that can be used for Perl projects and where they all fall short. Also looking at what an ideal solution could look like.
Learn to leverage the power of server-side Javascript with this Node.js introductory tutorial. We’ll dive into Node’s architecture and understand the build and dependency management systems involved. Several modules for Node will be demoed, and we’ll learn how to debug Node applications within an IDE. You’ll come away with an understanding of what sets Node apart from traditional Javascript, it’s inherently asynchronous and event-driven architecture, and take a look at some real world applications built on Node.
This is *not* my presentation by any mean. It is the one Isaac Schlueter gave at nodeconf. I had to upload it here because it was only available in .key here http://dl.dropbox.com/u/3685/presentations/nodeconf-npm/index.html
Justin Cormack - The 10 Container Security Tricks That Will Help You Sleep At...Codemotion
Containers, and the tooling around them, make some parts of application security that much easier. There are some simple things you can do to make a substantial difference to the security of your applications without making any big changes to what you do. This talk will give you some small changes you can make in a few hours that will make it that much more difficult to hack your applications.
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
Fine-tuning your development environment means more than just getting your editor set up just so -- it means finding and setting up a variety of tools to take care of the mundane housekeeping chores that you have to do -- so you have more time to program, of course! I'll share the benefits of a number of yak shaving expeditions, including using App::GitGot to batch manage _all_ your git repos, App::MiseEnPlace to automate getting things _just_ so in your working environment, and a few others as time allows.
Delivered at OpenWest 2016, 13 July 2016
Quando desenvolvemos uma aplicação, é importante executarmos testes para garantir o funcionamento dos diferentes módulos da aplicação. Este slide foi apresentado na trilha Javascript do TDC 2016 em São Paulo.
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016Gavin Pickin
Everyone who wasn't writing JavaScript, probably is now. Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.
That's great, but how do we test it? In ColdFusion we have CFCs, most languages have classes... but JavaScript doesn't have classes (yet).
So how do I write unit tests, what units are there, and how do I make my code look like that? JavaScript is a flexible language, and with great flexibility comes great complexity and responsibility. Take your JavaScript spaghetti and make it unit testable.
Attendees should have some exposure to JavaScript, but this is for the Professional Newbie... who always needs to learn and adapt.
A hands-on workshop that covers 18 best practices in 4 categories or in other words ✅️ Dos & Don'ts.
After a general introduction, we will have a look at the essential practices (aka must do), then move to the image practices, then we will go through the security practices, and finally, some general practices.
Please note, this workshop assumes that you have a basic knowledge of Docker.
Hands-on repo:
https://github.com/aabouzaid/docker-best-practices-workshop
In this advanced session, we will investigate all the ways that you can automate your testing processes with TestBox and many CI and automation tools. From Jenkins integration, Travis CI, Node runners, Grunt watchers and much more. This session will show you the value of continuous integration and how to apply it with modern tools and technologies.
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
ContainerCon - Test Driven InfrastructureYury Tsarev
Great external coverage of this presentation can be found at https://www.cedric-meury.ch/2016/10/test-driven-infrastructure-with-puppet-docker-test-kitchen-and-serverspec-yury-tsarev-gooddata/
CommandBox is the ColdFusion (CFML) CLI and package manager for modern applications. In this session, we will show you how to create, find and even publish packages to our centralized cloud repository, ForgeBox.
Main Points
What is CommandBox + ForgeBox?
How to create packages
Understanding packages and dependencies
How to find packages
Publishing to ForgeBox
A compare and contrast of Continuous Integration testing tools that can be used for Perl projects and where they all fall short. Also looking at what an ideal solution could look like.
Learn to leverage the power of server-side Javascript with this Node.js introductory tutorial. We’ll dive into Node’s architecture and understand the build and dependency management systems involved. Several modules for Node will be demoed, and we’ll learn how to debug Node applications within an IDE. You’ll come away with an understanding of what sets Node apart from traditional Javascript, it’s inherently asynchronous and event-driven architecture, and take a look at some real world applications built on Node.
This is *not* my presentation by any mean. It is the one Isaac Schlueter gave at nodeconf. I had to upload it here because it was only available in .key here http://dl.dropbox.com/u/3685/presentations/nodeconf-npm/index.html
Justin Cormack - The 10 Container Security Tricks That Will Help You Sleep At...Codemotion
Containers, and the tooling around them, make some parts of application security that much easier. There are some simple things you can do to make a substantial difference to the security of your applications without making any big changes to what you do. This talk will give you some small changes you can make in a few hours that will make it that much more difficult to hack your applications.
This talk will try to cover the most important techniques and best practices used when creating Django web application.
Overview of the topics covered:
- development general principles and goals
- python/django project initial setup - project layout, git&venv&pip&shell, settings
- central project shell command - contains all commands to manage project
- "IDE" - editor & shell
- edit/run/test cycle
- deploy/test-remotely cycle
Disclaimer: techniques and practices presented are current AUTHOR'S optimal choice used for usual django project.
In this presentation, I'm covering the topics
Node Package Manager (npm)
initializing a node project
dependencies and dev dependencies
Installation, listing and uninstallation of node packages
Importing of modules
A story of how we went about packaging perl and all of the dependencies that our project has.
Where we were before, the chosen path, and the end result.
The pitfalls and a view on the pros and cons of the previous state of affairs versus the pros/cons of the end result.
Node.js is a lightweight but yet capable platform for creating powerful web applications. The core of Node.js is kept small and restricted to a limited functionality that is extended by a vast ecosystem. With the right combination of packages you are able to build full-featured web applications. There is nearly no limit in features starting with simple problems such as authentication or logging over web interfaces with REST or GraphQL to a whole application based on a microservices architecture. In this talk I will introduce you to some commonly used packages and show you how to use them by example.
Node Summit 2016: Building your DevOps for Node.jsChetan Desai
Chetan shares best practices and lessons learned on Intuit’s two year journey in introducing Node.js to their TurboTax technology stack. He will specifically be focusing on Intuit’s build and deploy principles in hosting Node.js services. Chetan will also share steps in how to build a Node.js service using enterprise best practices, including reliable deployment practices.
Neutron is one of the most important and challenging OpenStack projects. Getting started as a Neutron contributor will put you at the center of the OpenStack revolution. In this session you will get an overview of the Neutron architecture and the tools (Git, Gerrit, Launchpad, Jenkins) you'll need to know to start contributing. We will also walk you through the development process from new feature proposal, to coding best practices, to change testing before submitting, and finally how to handle the review process and community interaction. By the end, you will be ready to start hacking on Neutron.
Join us for this interactive event and get your hands dirty with some WildFly 9 hacking!
Our host Kabir Khan will explain how you can contribute to the WildFly project at many different levels, from properly reporting bugs in the forums and issue tracker, to actually being able to submit a pull request.
During this interactive event you will have a chance to play with WildFly 9 and try some of the following:
• Find a JIRA you want to work on.
• See how to check-out the code and setup your IDE.
• Build WildFly
• Code walkthrough - code organisation, jboss-modules etc.
• Debug something from a stack trace in a JIRA issue to nail down the problem.
• Try the testsuite
• And more!
Topics of this presentation:
- Basics and best practices of developing single-page applications (SPA) and Web API Services on Microsoft .NET -
- Core with Docker and Linux.
- PowerShell Core automated builds.
- Markdown/PDF documentation.
- Documentation of public interfaces with Swagger/OAS/YAML.
- Automated testing of SPA on Protractor and testing the Web API on Postman/Newman.
This presentation by Sergii Fradkov (Consultant, Engineering), Andrii Zarharov (Lead Software Engineer, Consultant), Igor Magdich (Lead Test Engineer, Consultant) was delivered at GlobalLogic Kharkiv .NET TechTalk #1 on May 24, 2019.
About
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
Technical Specifications
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
Key Features
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface
• Compatible with MAFI CCR system
• Copatiable with IDM8000 CCR
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
Application
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
Student information management system project report ii.pdfKamal Acharya
Our project explains about the student management. This project mainly explains the various actions related to student details. This project shows some ease in adding, editing and deleting the student details. It also provides a less time consuming process for viewing, adding, editing and deleting the marks of the students.
Hierarchical Digital Twin of a Naval Power SystemKerry Sado
A hierarchical digital twin of a Naval DC power system has been developed and experimentally verified. Similar to other state-of-the-art digital twins, this technology creates a digital replica of the physical system executed in real-time or faster, which can modify hardware controls. However, its advantage stems from distributing computational efforts by utilizing a hierarchical structure composed of lower-level digital twin blocks and a higher-level system digital twin. Each digital twin block is associated with a physical subsystem of the hardware and communicates with a singular system digital twin, which creates a system-level response. By extracting information from each level of the hierarchy, power system controls of the hardware were reconfigured autonomously. This hierarchical digital twin development offers several advantages over other digital twins, particularly in the field of naval power systems. The hierarchical structure allows for greater computational efficiency and scalability while the ability to autonomously reconfigure hardware controls offers increased flexibility and responsiveness. The hierarchical decomposition and models utilized were well aligned with the physical twin, as indicated by the maximum deviations between the developed digital twin hierarchy and the hardware.
Cosmetic shop management system project report.pdfKamal Acharya
Buying new cosmetic products is difficult. It can even be scary for those who have sensitive skin and are prone to skin trouble. The information needed to alleviate this problem is on the back of each product, but it's thought to interpret those ingredient lists unless you have a background in chemistry.
Instead of buying and hoping for the best, we can use data science to help us predict which products may be good fits for us. It includes various function programs to do the above mentioned tasks.
Data file handling has been effectively used in the program.
The automated cosmetic shop management system should deal with the automation of general workflow and administration process of the shop. The main processes of the system focus on customer's request where the system is able to search the most appropriate products and deliver it to the customers. It should help the employees to quickly identify the list of cosmetic product that have reached the minimum quantity and also keep a track of expired date for each cosmetic product. It should help the employees to find the rack number in which the product is placed.It is also Faster and more efficient way.
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)MdTanvirMahtab2
This presentation is about the working procedure of Shahjalal Fertilizer Company Limited (SFCL). A Govt. owned Company of Bangladesh Chemical Industries Corporation under Ministry of Industries.
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdffxintegritypublishin
Advancements in technology unveil a myriad of electrical and electronic breakthroughs geared towards efficiently harnessing limited resources to meet human energy demands. The optimization of hybrid solar PV panels and pumped hydro energy supply systems plays a pivotal role in utilizing natural resources effectively. This initiative not only benefits humanity but also fosters environmental sustainability. The study investigated the design optimization of these hybrid systems, focusing on understanding solar radiation patterns, identifying geographical influences on solar radiation, formulating a mathematical model for system optimization, and determining the optimal configuration of PV panels and pumped hydro storage. Through a comparative analysis approach and eight weeks of data collection, the study addressed key research questions related to solar radiation patterns and optimal system design. The findings highlighted regions with heightened solar radiation levels, showcasing substantial potential for power generation and emphasizing the system's efficiency. Optimizing system design significantly boosted power generation, promoted renewable energy utilization, and enhanced energy storage capacity. The study underscored the benefits of optimizing hybrid solar PV panels and pumped hydro energy supply systems for sustainable energy usage. Optimizing the design of solar PV panels and pumped hydro energy supply systems as examined across diverse climatic conditions in a developing country, not only enhances power generation but also improves the integration of renewable energy sources and boosts energy storage capacities, particularly beneficial for less economically prosperous regions. Additionally, the study provides valuable insights for advancing energy research in economically viable areas. Recommendations included conducting site-specific assessments, utilizing advanced modeling tools, implementing regular maintenance protocols, and enhancing communication among system components.
5. Just a guy that loves software and his kid, but mostly software.
Introduction
Playstation
Javascript Engineer
Harman
Audio Hardware Engineer
Verisage
Software Consulting
Pinterest
Full-Stack Engineer
San Mateo
Dad
Twitter:
@zackargyl
Github:
github.com/zackargyl
Medium:
medium.com/@zackargyle/
12. The bane of every open-source developer’s existence is argument validation.
• Ain’t nobody got time to add hundreds of lines of validation to make sure people are putting the right
crap in the right spots
• Be specific
Bad
• PropTypes.array
Good
• PropTypes.arrayOf(PropTypes.number)
• Add .isRequired for all required properties
• Add a defaultProp value for all non-required properties
• Comment about what the prop does in either the class documentation (@prop) or at the PropType
declaration.
PropTypes are Elegant
12
14. When contributors make changes, good tests will give you the confidence to merge.
• Add fixtures to make adding tests easier.
• Test UI. The beautiful thing about React is that you can shallow render a component and make
assertions against what you know it should look like.
• Test methods. Test key internal component methods against edge cases.
• Test everything you can. Not sure if you should test it === yes.
• Require tests from all incoming PRs that change more than configurations / typos
• Which testing framework should you use?
Testing is Key
14
17. Never trust yourself to catch what automation can catch.
• It’s a one-time configuration that gives back to the
project in abundance.
• Saves you from being the butthole owner that nit picks
every PR. Can you say scapegoat?
• When contributing to a codebase it’s nice to have a
standard to code towards.
• There is literally no downside to linting. Ok maybe there
are one or two.
Linting Saves Time
17
19. Don’t slack off on documentation.
The 3 Things Every README Needs
19
Pictures
Always show a visual
representation of what your
component does
Props Dev Tips
2 3
Add a table or some simple
way of seeing what props
are available for use
Provide tips on how to get
started in contributing to
the component
1
21. There’s a lot of little things to learn, so break it down.
• devDependencies - Any dependencies that are requirements for contributing to the component.
• peerDependencies - This means that your component is like a plugin for a given dependency. It will
not install the dependency itself, but expects it to be there. Ours has `react` as a peer dep.
• dependencies - Any dependencies that are requirements for production.
• files - List of directories/files to be included when npm installed. You can
conversely use a .npmignore file to exclude directories/files.
• main - Path to the file that should be referenced when `required` (the dist file).
• jsnext:main - Like main, but points to an ES2015 file (the src file).
• keywords - These are `tags` for your component. Make sure to at least include
`react` and `react-component`.
package.json
21
22. You can create your own, or tie into keywords.
Scripts
22
• start - Typically used for starting your development server ( ie., cd example && node server.js ).
• test - Runs the unit tests for your component ( ie., node_modules/.bin/karma start karma.config.js ).
• build - Compiles/minifies your src directory ( ie., npm run clean && webpack --config
webpack.config.js ).
• lint - Runs the linters to verify code quality ( ie., ./node_modules/eslint/bin/eslint.js src ).
• prepublish - Runs before publishing to NPM. Typically runs build ( ie., npm run build ).
"scripts": {
"build": "npm run clean && webpack --config webpack.config.js",
"clean": "rimraf dist lib",
"lint": "./node_modules/eslint/bin/eslint.js src",
"prepublish": "npm run build",
"start": "cd example && node server.js",
"test": "node_modules/.bin/karma start karma.config.js”
}
23. Just use MIT, it’s popular and truly open.
Licenses
23
24. All public projects on NPM are free to create and maintain.
Getting Started with NPM
24
• Create your account -NPM Sign up
• Command Line
npm login: use the credentials for the user you just created
npm publish
• README - Make sure your component page looks good on npmjs.com
Go check it out at https://www.npmjs.com/package/<component_name>
• Try it - Make sure your project installs correctly (npm install <component_name>)
25. Semantic Versioning
25
“Semantic versioning is a standard that a lot of projects use to communicate
what kinds of changes are in this release. It's important to communicate what kinds
of changes are in a release because sometimes those changes will break the code
that depends on the package.” - NPM
26. Use the correct versioning to ensure compatibility for your users.
Versioning
26
• 1.0.0 - Publish to NPM.
npm publish
• 1.0.1 - Patch release. Bug fixes or minor changes.
npm version patch -m “[B124] Fixes some bug”
• 1.1.0 - Minor release. New feature with backwards compatibility.
npm version minor -m “Adds X feature”
• 2.0.0 - Major release. New features that break old versions.
npm version major -m “Architecture change for X”
- VirtualDOM is cool, but components are better
- Field defined by an ecosystem of collaboration
- Let better people build better things
Lightweight: good developers are aware of the weight of a dependency. Keep yours light to encourage usage. Lodash vs Underscore.
Encapsulated: important for open-source components
Stateless: great, but encapsulated components tend to have state, that’s ok!
Performant: in an ecosystem with multiple alternatives, be the fastest
Minimal Dependencies: pubsub libraries, query string libraries, try to avoid all dependencies
Test the notes
Test the notes
Test the notes
- Engineers are notoriously bad at documentation, but for open-source, it is absolutely essential.